我的内存泄漏某处,但它似乎与我的程序无关。我根据以下事实做出这个大胆的陈述:一旦我的程序终止,无论是通过seg-faulting,exitting还是aborting,内存都无法恢复。如果我的程序是罪魁祸首,我会假设MMU会恢复所有内容,但事实并非如此。
我的问题是:
在一个运行程序的小型Linux系统(64 Mb Ram)上,该程序只使用堆栈内存和几次调用malloc()
,导致我看到内存耗尽并保持一次的原因我的程序终止了吗?
相关问题是here:
这一切都是在有问题的代码将stdout,stderr指向文件之后开始的。几个小时后,它因“分段故障”而中止。快速(天真?)看看/ proc / meminfo表明没有太多可用的内存,所以我认为有些东西在泄漏。
答案 0 :(得分:0)
看来我没有内存泄漏(见here),但它确实引出了一些新问题......
事实证明,写入块设备可以使用相当多的物理内存;在我的系统中只有64兆,因此将数百兆的写入USB驱动器会增加缓存,活动和非活动内存池。
卸载设备后,这些内存池会立即释放到可用内存池。
我的分段错误的确切原因仍然是一个小谜,但我知道通过更好地了解虚拟内存资源可以减少它的出现,特别是在使用Block设备时。