我刚开始使用面包丁。我正在尝试将它用于 linux 环境中的一些 C 编程练习。每当我运行一个使用 malloc() 的程序时,我都会收到 x 个字节的内存泄漏错误。当我显式释放分配的内存时,内存泄漏错误消失了。这是一个 Crouton 问题还是一个 Ubuntu 问题?
有什么方法可以解决这个问题,这样我就不必每次都显式释放分配的空间了吗?我知道 free()ing 是很好的编码实践等等,但我只是想知道是否有一种方法可以让分配的内存在退出后自动释放。
最佳答案
在 Linux(和大多数现代多任务操作系统)上,当进程退出(或终止,例如通过信号)时,其所有资源都由操作系统内核释放,包括其 virtual address space .
所以肯定有可能在退出前忘记释放
堆内存,许多(但不是所有)程序都这样做。
如果您正在开发应用程序,您可能仍希望在退出时正确地释放
每个动态分配的内存区域。这有助于使用内存泄漏检测工具,如 valgrind (但需要一些开发工作,甚至一些运行时间)。
关于Crouton 环境退出程序后不释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043612/