我最近经常使用 c,发现我真的不喜欢处理内存管理,或者至少不喜欢这样的想法:如果我 malloc 一个指针,我必须释放它,即使这是最微不足道的事情。这导致我在堆栈上分配尽可能多的空间并使用 & 来获取它的位置。甚至制作单独的 int 和 inptr 变量(我在宏中使用 & 运算符时遇到了一些左值问题)。
我还没有找到很多我不得不处理向上(上方/下方)分配数据的地方。同时我需要相当数量的早期返回(我宁愿避免 gotos)。一般c意见怎么说?是否有任何明显迹象表明我应该在特定情况下使用其中一种或另一种。
附言让我有点担心的一件事是,由于对 malloc 使用了错误的 sizeof,我最近遇到了内存损坏问题,我没有立即注意到它,因为在那之后我的大部分代码路径都没有使用堆.您认为这种隐藏腐败的问题有多大?
最佳答案
如果出现以下情况,您应该使用 malloc
:
- 您正在将指向非
static const
数据的指针传递到调用堆栈中,或者 - 您要分配变量或只是分配大量数据(否则有堆栈溢出的风险)。
在其他情况下,堆栈分配应该没问题。
关于C 最佳实践,堆栈与堆分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4836516/