Linux和内存泄漏
Linux是否会自动立即重新声明应用程序使用的所有内存 如果是这样,那么应用程序真的应该在退出之前释放所有内存吗 在调用exit(0)之前,调用多线程应用程序中每个类的析构函数真的值得吗 如果Linux总是立即重新声明应用程序使用的所有内存,那么内存泄漏只是应用程序创建的悬而未决的指针,也只是应用程序的生命周期 Linux是否会自动立即重新声明应用程序使用的所有内存 不,但在你暗示的意义上是的。属于该进程的所有虚拟内存都将被释放。未共享的帧可供其他进程使用 如果是这样,那么应用程序真的应该在退出之前释放所有内存吗 是的,有几个原因:Linux和内存泄漏,linux,memory-leaks,Linux,Memory Leaks,Linux是否会自动立即重新声明应用程序使用的所有内存 如果是这样,那么应用程序真的应该在退出之前释放所有内存吗 在调用exit(0)之前,调用多线程应用程序中每个类的析构函数真的值得吗 如果Linux总是立即重新声明应用程序使用的所有内存,那么内存泄漏只是应用程序创建的悬而未决的指针,也只是应用程序的生命周期 Linux是否会自动立即重新声明应用程序使用的所有内存 不,但在你暗示的意义上是的。属于该进程的所有虚拟内存都将被释放。未共享的帧可供其他进程使用 如果是这样,那么应用程序真的应该在退出
- 您可能决定将来将代码扩展到其他用途,以后添加清理可能会很困难
- 内存使用过多,实际上需要“浪费”虚拟内存空间
- 您需要跟踪一些bug:不小心地释放获取的资源将使调试非常困难
- 您可能决定将来将代码扩展到其他用途,以后添加清理可能会很困难
- 内存使用过多,实际上需要“浪费”虚拟内存空间
- 您需要跟踪一些bug:不小心地释放获取的资源将使调试非常困难
是的。这一理论的唯一崩溃是当所持有的资源是全局的,并且不会在流程终止时消失。共享内存、设计拙劣的第三方库、临时文件等就是这样的例子。这实际上取决于这些构造函数做什么。如果它们所做的只是释放私有内存,那么不需要 如果他们做其他事情,例如刷新光盘文件,其中可能有未写入的数据,那么这可能很重要 顺便说一句,我非常喜欢_exit()库调用——它类似于exit(),但atexit处理程序没有运行 健壮的应用程序应该能够容忍随时消失,因此退出的有效方法是_exit(),因为它仍然比崩溃更容易控制 当然,还有其他泄漏资源的方式——不仅仅是内存。临时文件是一个很明显的文件,在您调用_exit后,它将保持存在
此外,如果您创建posix或sysv共享内存,它将在进程退出时保持存在。这非常类似于一个临时文件(在Linux下,它被实现为内核中tmpfs上的一个文件)这实际上取决于那些构造函数做什么。如果它们所做的只是释放私有内存,那么不需要 如果他们做其他事情,例如刷新光盘文件,其中可能有未写入的数据,那么这可能很重要 顺便说一句,我非常喜欢_exit()库调用——它类似于exit(),但atexit处理程序没有运行 健壮的应用程序应该能够容忍随时消失,因此退出的有效方法是_exit(),因为它仍然比崩溃更容易控制 当然,还有其他泄漏资源的方式——不仅仅是内存。临时文件是一个很明显的文件,在您调用_exit后,它将保持存在
此外,如果您创建posix或sysv共享内存,它将在进程退出时保持存在。这非常类似于一个临时文件(在Linux下,它是在内核中的tmpfs上实现的)@Hasturkun:谢谢,我从来没有引用过before@Hasturkun:谢谢,我以前从未引用过