I have the following code:
int *p;
p = (int*)malloc(sizeof(int) * 10);
但是这个有10个元素的int数组的默认值是什么?它们都是0吗?
真正的内容是不确定的。
C11,§7.22.3.4
malloc
函数
malloc
函数分配一个大小由 size 指定、值为不确定的对象的空间。
然而,操作系统通常将此内存空间初始化为0(请参见此答案)。您可以使用calloc
来确保每个位都被设置为0。
are all of them 0?
malloc
不会初始化分配的内存,使用 calloc
可以将所有值初始化为 0
。int *p;
p = calloc(10, sizeof(int));
这是未定义的行为。建议使用 calloc( )
代替,这样分配的缓冲区会被定义为填充二进制0。
malloc()
的返回值。 - unwind