c中malloc之后的默认值是多少?

时间:2013-07-03 09:37:22

标签: c malloc

我有以下代码:

int *p;

p = (int*)malloc(sizeof(int) * 10);

但是这个带有10个元素的int数组的默认值是多少?他们都是0?

5 个答案:

答案 0 :(得分:7)

真正的内容是不确定的。

  

C11,§7.22.3.4malloc函数

     

malloc函数为大小和大小指定的对象分配空间   其值不确定

但是,操作系统通常会将此内存空间初始化为0(请参阅this answer)。您可以使用calloc来确保每个位都设置为0。

答案 1 :(得分:3)

are all of them 0?

不,malloc未初始化已分配的内存,请使用calloc将所有值初始化为0

int *p;
p = calloc(10, sizeof(int));

答案 2 :(得分:2)

未定义。使用calloc( )代替,然后将分配的缓冲区定义为用二进制0填充

答案 3 :(得分:0)

为此,您需要使用calloc()。 malloc()仅分配内存,因此默认情况下此内存包含垃圾值。

答案 4 :(得分:0)

使用malloc创建的元素的“默认”值是存储在此内存中的值(通常为0,但如果另一个程序在此处写入,则可以使用其他值)。 你可以使用calloc,或者在malloc之后,你可以memset你的var。 并且不要忘记验证指针的值,检查它是否为NULL。