我知道以下内容:
- 分配
- 调用
- 重新分配
它们之间有什么区别?为什么 malloc 似乎几乎被完全使用?编译器之间是否存在行为差异?
最佳答案
malloc
分配内存。内存的内容保持原样(填充之前的内容)。
calloc
分配内存并将其内容设置为全零。
realloc
更改现有已分配内存块的大小,或将现有内存块的内容复制到请求大小的新分配 block 中,然后释放旧 block 。
显然,realloc
是一种特殊情况。如果您没有要调整大小(或复制和释放)的旧内存块,则没有理由使用它。通常使用 malloc
而不是 calloc
的原因是因为将内存设置为全零会产生运行时成本,并且如果您打算立即填充包含有用数据的内存(这很常见),没有必要先将其清零。
这些函数都是标准的,并且在编译器中表现可靠。
关于c - 在 C 中分配内存的所有方法是什么?它们有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791294/