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