动态内存的初始值是多少
What is the initial value of dynamic memory
当我使用 malloc
系列的函数在 C 中动态分配内存时,是否有一些规则(来自 C 标准或 OS 的内部工作原理)关于初始值是多少那段记忆的价值是?
int* ptr = malloc(sizeof (*ptr));
bool b = *ptr == 0; // always true?
就C 标准而言,动态分配内存的初始值是不确定的。有些平台可能碰巧给你零,其他平台可能碰巧给你像 0xEE 这样的保护值,但是 none 在可移植的 C 程序中可以依赖它。
如果你需要零,最常规的方法是使用calloc()
,它有机会在某些平台上进行优化。
当我使用 malloc
系列的函数在 C 中动态分配内存时,是否有一些规则(来自 C 标准或 OS 的内部工作原理)关于初始值是多少那段记忆的价值是?
int* ptr = malloc(sizeof (*ptr));
bool b = *ptr == 0; // always true?
就C 标准而言,动态分配内存的初始值是不确定的。有些平台可能碰巧给你零,其他平台可能碰巧给你像 0xEE 这样的保护值,但是 none 在可移植的 C 程序中可以依赖它。
如果你需要零,最常规的方法是使用calloc()
,它有机会在某些平台上进行优化。