memset 将 -1 放入我的数组中,而不是我指定的值,这是怎么回事?

Posted

技术标签:

【中文标题】memset 将 -1 放入我的数组中,而不是我指定的值,这是怎么回事?【英文标题】:memset is placing -1 into my array instead of the value I specified, what is going on? 【发布时间】:2012-04-22 22:38:51 【问题描述】:
    int * best = new int[numNodes];
memset(best,numeric_limits<int>::max()/2,numNodes*sizeof(int));
    int test = numeric_limits<int>::max()/2;

打印出数组给了我一个全 ​​-1 的数组。 打印出 int 'test' 给了我正确的值 '1073741823'

我包含'cstring' 以使用memset。 这是我正在关注的文档: http://www.cplusplus.com/reference/clibrary/cstring/memset/

为什么我会得到这个结果?我敢肯定这可能很明显,我只是没看到。

【问题讨论】:

【参考方案1】:

memset 用 unsigned char 填充内存:

void *memset(void *DST, int C, size_t LENGTH);
   This  function converts the argument C into an unsigned char and fills the
   first LENGTH characters of the array pointed to by DST to the value.

【讨论】:

以上是关于memset 将 -1 放入我的数组中,而不是我指定的值,这是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

使用 memset 初始化整数数组而不是像 array[10]=0 这样的默认零初始化是不是有任何性能优势?

Python Array,试图将文本文件放入数组中

怎么用memset清空字符数组?

C语言中,memset函数都可以给啥类型的数组清零?

将字节数组放入 JSON,反之亦然

为啥在 memset 中使用 '\0' 而不是 0?