Crouton 环境退出程序后不释放内存?

标签 c memory-leaks malloc crouton-os

我刚开始使用面包丁。我正在尝试将它用于 linux 环境中的一些 C 编程练习。每当我运行一个使用 malloc() 的程序时,我都会收到 x 个字节的内存泄漏错误。当我显式释放分配的内存时,内存泄漏错误消失了。这是一个 Crouton 问题还是一个 Ubuntu 问题?

有什么方法可以解决这个问题,这样我就不必每次都显式释放分配的空间了吗?我知道 free()ing 是很好的编码实践等等,但我只是想知道是否有一种方法可以让分配的内存在退出后自动释放。

最佳答案

在 Linux(和大多数现代多任务操作系统)上,当进程退出(或终止,例如通过信号)时,其所有资源都由操作系统内核释放,包括其 virtual address space .

所以肯定有可能在退出前忘记释放堆内存,许多(但不是所有)程序都这样做。

如果您正在开发应用程序,您可能仍希望在退出时正确地释放每个动态分配的内存区域。这有助于使用内存泄漏检测工具,如 valgrind (但需要一些开发工作,甚至一些运行时间)。

关于Crouton 环境退出程序后不释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043612/

相关文章:

c - 在键入 'next' 命令后,gdb 在执行下一个程序行时返回什么退出代码?

c++ - 删除在另一个函数中分配的内存?

c - 为什么指针数组的 free() 不释放内存?

c - 使用指向 struct C 的指针分配数组并返回该数组

c - 在函数中声明在 int main() 中多次调用的变量(在 C 中)

c - 代码中可能存在内存错误以及可能的解决方案?

javascript - XMLHttpRequest 泄漏

ffmpeg - 将 AVFrame 收集到缓冲区中

c - 在 arm7 问题 : malloc return NULL 中使用 gcc 实现 malloc

c - 访问存储在 mxArray 中的对象的字符串属性