动态内存的初始值是多少?

hgi*_*sel 0 c heap heap-memory dynamic-allocation

当我用C malloc系列函数动态分配内存时,是否有一些规则(来自C标准或操作系统的内部工作)关于该内存的初始值是什么?

int* ptr = malloc(sizeof (*ptr));
bool b = *ptr == 0;  // always true?
Run Code Online (Sandbox Code Playgroud)

Joh*_*nck 5

就C标准而言,动态分配内存的初始值是不确定的.有些平台可能碰巧给你零,其他平台可能碰巧给你像0xEE这样的保护值,但在便携式C程序中都不能依赖它.

如果你需要零,最常用的方法是使用calloc(),它有可能在某些平台上进行优化.