C最佳实践,堆栈与堆分配

Rom*_*her 3 c stack heap-memory

我最近一直在使用ca,发现我真的不喜欢处理内存管理,或者至少我认为如果我指向一个指针我必须释放它,即使它是最琐碎的事情.这导致我尽可能多地在堆栈上分配并使用&获取其位置.甚至创建单独的int和inptr变量(我在宏中使用&运算符时出现了一些左值问题).

我找不到很多地方需要处理数据传输(上/下)的地方.与此同时,我需要相当数量的早期回报(而且我宁愿避免得到).一般的c意见是什么?在特定情况下我是否应该使用其中一个或另一个明显的迹象.

PS让我有点担心的一件事是,我最近因为使用了错误的sizeof for malloc而出现了内存损坏问题而且我没有立即注意到它,因为我的大部分代码路径直接在那之后没有使用堆.你认为这种腐败隐藏的问题有多大?

Fre*_*Foo 7

你应该使用mallocif:

  1. 你正在static const向调用堆栈传递指向非数据的指针,或者
  2. 你正在分配变量或只是大量的数据(否则你冒着堆栈溢出的风险).

在其他情况下,堆栈分配应该没问题.