当我使用 malloc
系列的函数在 C 语言中动态分配内存时,是否有一些规则(来自 C 标准或操作系统的内部工作原理)关于它的初始值是多少内存是什么?
int* ptr = malloc(sizeof (*ptr));
bool b = *ptr == 0; // always true?
最佳答案
就 C 标准而言,动态分配内存的初始值是不确定的。有些平台可能碰巧给你零,其他平台可能碰巧给你像 0xEE 这样的保护值,但在可移植的 C 程序中这些都不能依赖。
如果需要零,最常规的方法是使用 calloc()
,它有机会在某些平台上得到优化。
关于c - 动态内存的初始值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041566/