c - 在 C 中分配内存的所有方法是什么?它们有何不同?

标签 c dynamic-memory-allocation

我知道以下内容:

  • 分配
  • 调用
  • 重新分配

它们之间有什么区别?为什么 malloc 似乎几乎被完全使用?编译器之间是否存在行为差异?

最佳答案

malloc 分配内存。内存的内容保持原样(填充之前的内容)。

calloc 分配内存并将其内容设置为全零。

realloc 更改现有已分配内存块的大小,或将现有内存块的内容复制到请求大小的新分配 block 中,然后释放旧 block 。

显然,realloc 是一种特殊情况。如果您没有要调整大小(或复制和释放)的旧内存块,则没有理由使用它。通常使用 malloc 而不是 calloc 的原因是因为将内存设置为全零会产生运行时成本,并且如果您打算立即填充包含有用数据的内存(这很常见),没有必要先将其清零。

这些函数都是标准的,并且在编译器中表现可靠。

关于c - 在 C 中分配内存的所有方法是什么?它们有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791294/

相关文章:

c - 为什么我的按位除法函数会产生段错误?

通过C程序进行Android串口通信

c - .bss 与 .data : static q32 vs static int

c++ - 动态分配 stdlib 堆栈?

c++ - 内存映射文件中对象的排序

复制字符串函数,复制的字符串不在函数本身中打印

c - 编译器 (C/C++) 如何识别注释?

使用参数调用 obj-c 方法

无法从二维动态数组中释放内存

c - 如何检测分配内存块的位置?