我有以下代码:
int *p;
p = (int*)malloc(sizeof(int) * 10);
但是这个带有10个元素的int数组的默认值是多少?他们都是0?
答案 0 :(得分:7)
真正的内容是不确定的。
C11,§7.22.3.4
malloc
函数
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。