【发布时间】:2013-08-02 14:05:51
【问题描述】:
我在基于 arm 的 Linux 设备上运行 C 代码,该设备的 RAM 空间非常小 (16MB)。我的代码经常被内核杀死(SIGKILL)并显示“内存不足”消息。我用 Valgrind 运行程序,看起来没有内存泄漏。我也使用 gdb 运行代码,但无法识别代码中的任何错误。我会尝试多次优化我的代码。
一般来说,将内存使用量降至最低的代码的良好实施做法是什么?
- 一个可能是尽可能多地使用函数(?),但我猜 gcc 已经优化了代码以减少源代码的使用。
- 避免动态内存分配
- 还有什么?
【问题讨论】:
-
为什么要避免动态内存分配?只要记住释放他们。它总是崩溃吗?大量函数可能意味着大量帧和大量堆栈空间。你能弄清楚堆栈是否正在死去吗?
-
避免动态内存分配 -> 你可能会填满你的堆栈空间并得到与动态分配相同的结果。
-
动态内存分配比隐式堆栈分配效率低,不是吗?
-
@sven“静态”分配比动态分配快是的
-
ssh me@serious_computer program
标签: c performance memory-management ram memory-efficient