【发布时间】:2018-03-01 06:11:31
【问题描述】:
我不熟悉使用 Crouton。我正在尝试将它用于 linux 环境中的一些 C 编程实践。每当我运行一个使用 malloc() 的程序时,我都会收到 x 个字节的内存泄漏错误。当我明确释放分配的内存时,内存泄漏错误消失了。这是Crouton问题还是整体上的Ubuntu问题?
有什么办法可以解决这个问题,这样我就不必每次都显式释放分配的空间了?我知道 free()ing 是一种很好的编码习惯等等,但我只是想知道是否有办法让分配的内存在退出后自动释放。
【问题讨论】:
-
你为什么要改变我们做事的方式 - 这是你释放他们的呼吁,你正在这样做。应该是这样的。为什么要避免它?
-
分配的内存在进程退出后不再存在,因为它仅在进程地址空间中分配并且该地址空间不再存在。
-
我明白明确释放是最佳实践。我只是想知道为什么 Crouton 没有自动为你做这件事。将来我肯定会使用 free,因为随着程序变得更大更复杂,它通常是解决内存泄漏的好方法。
-
什么是报告内存泄漏错误?编译到程序中的东西会在程序退出时打印报告?调试器还是 IDE?克鲁顿的东西?您运行的外部程序?
-
@coderredoc:如果一个程序正在退出,释放它的内存有什么好处?在进程中释放内存只会改变数据结构,当操作系统释放进程使用的内存时,这些数据结构就会消失。释放所有内存的进程退出的最终结果与没有释放所有内存的进程退出的最终结果相同,因此花费时间来释放内存是浪费计算时间。 (当程序继续运行时,内存必须在正在进行的进程中释放,但最终终止不需要释放内存。)
标签: c memory-leaks malloc crouton-os