linux - ARM/Linux内存泄漏: Can a user program retain memory after terminating?

标签 linux memory-leaks

某处发生内存泄漏,但它似乎与我的程序无关。我做出这个大胆的声明是基于这样一个事实:一旦我的程序因段错误、退出或中止而终止,内存就不会恢复。如果我的程序是罪魁祸首,我会假设 MMU 会恢复所有内容,但情况似乎并非如此。

我的问题是:

在一个小型 Linux 系统(64 Mb RAM)上运行一个仅使用堆栈内存和几次调用 malloc() 的程序时,是什么原因导致我看到内存正在耗尽并在程序终止后保持不变?

相关问题是here :

<小时/>

这一切都是在相关代码将其 stdout、stderr 定向到文件后开始的。几个小时后,它因“段错误”而中止。快速(天真?)查看/proc/meminfo 显示没有太多可用内存,所以我假设有东西泄漏。

最佳答案

看来我没有内存泄漏(请参阅 here ),但它确实让我产生了一些新问题......

<小时/>

事实证明,写入 block 设备会占用大量物理内存;在我的系统中只有 64 Meg,因此将数百个 Meg 写入 USB 驱动器会大大增加缓存、事件和非事件内存池。

当设备卸载时,这些内存池会立即释放到 Free 内存池。

段错误的确切原因仍然是一个小谜团,但我知道可以通过更好地了解虚拟内存资源来减少这种情况的发生,特别是在 block 设备的使用方面。

关于linux - ARM/Linux内存泄漏: Can a user program retain memory after terminating?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1545533/

相关文章:

java - 如何解决android服务泄露错误

c - 使用 Libgcrypt 的程序中的内存泄漏

iphone - 奇怪的内存泄漏

ios - PKCS12_newpass 中的内存泄漏

java - fatal error : jni_md. h:没有这样的文件或目录#include "jni_md.h"

c++ - 从命令行开始?

c - 正确的 fork() 和 pipe() 用于有多个 child 的单亲。我该怎么做?

linux - 只删除文件而不删除 linux 中的目录

python - 在 Python 中使用 <128KB 的字符串时内存泄漏?

php - UTF-8贯穿始终