我是使用Crouton的新手。我试图将它用于Linux环境中的一些C编程实践。无论何时我运行使用malloc()的程序,我都会得到x个字节的内存泄漏错误。当我明确释放分配的内存时,内存泄漏错误消失。这是一个Crouton问题还是整个Ubuntu问题?
有没有办法解决它,所以我不必每次都明确释放分配的空间?我理解free()ing是很好的编码实践和诸如此类的东西,但我只是想知道是否有办法让分配的内存在退出后自动释放。
答案 0 :(得分:1)
在Linux(以及大多数现代多任务操作系统)上,当进程退出(或终止,例如通过信号)时,其所有资源都由OS内核释放,包括其virtual address space。
因此,在退出之前忘记free
堆内存肯定是可能的,并且许多(但不是全部)程序都这样做。
如果您正在开发应用程序,则可能仍希望在退出时正确free
每个动态分配的内存区域。这有助于使用内存泄漏检测工具,如valgrind(但需要一些开发工作,甚至一些运行时)。