c - 动态内存的初始值是多少

标签 c heap-memory dynamic-memory-allocation

当我使用 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/

相关文章:

c - 具有指针的基于数组的堆栈的C程序

c - 重新分配后打印字符串数组时遇到问题?

c - 重新分配结构会导致堆损坏

c++ - C++中的动态内存问题

c++ - 指向固定大小数组行为的指针

在 Cuda 中计算 GFLOPS

c++ - 如何在 C++ 异常类析构函数中释放变量

C++在函数内分配动态数组

java - 堆中的 Java 执行与 c/c++ 堆栈中的执行有何不同?

java - Netbeans,分布式 Jar 文件,增加堆大小