鉴于这个用gcc 4.3.3编译的C代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[])
{
int * i;
i = (int *) malloc(sizeof(int));
printf("%d\n", *i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望输出是malloc()返回的内存中的任何内容,而输出是0. malloc是否将它返回的内存归零?如果是这样,为什么?
Rob*_*ble 36
malloc 本身并不会将内存清零,但是许多操作系统会将程序请求的内存归零(出于安全原因)(以防止一个进程访问另一个进程使用的潜在敏感信息).
该malloc()函数不会将分配的内存设置为任何特定值.如果要确保内存为零,请使用calloc()或等效.否则,你得到之前的任何东西(在你的情况下,可能是零).