c - 调试时使用 exit() 函数

标签 c memory-leaks exit

我正在做一个 C 项目。当程序正常运行时,它会在程序结束时进行清理。它清理 curl 和 mysql,以及 free()s char 数组等。

当我开发新例程时,我正在分配应在程序结束时清理的资源。但是为了看看新例程发生了什么,我正在打印各种东西然后调用: 退出(0);

我的问题是,当我使用这些粗鲁的退出命令编译代码时,linux 环境是否足够智能以释放本应在程序结束时释放的资源?或者我是否正在开发系统内存泄漏?

最佳答案

是的,内存将被释放,但它不会被进程放弃,而是会在进程退出后的某个时间点被操作系统回收。

在极端情况下,这可能会使 RAM 不与进程相关联,但会临时使用,导致操作系统累积停滞。这实际上只是“非常”遗留操作系统(认为已有 20 多年历史)中的一个主要问题。

在许多情况下,文件句柄的供应比 RAM 少,您在等待新文件句柄时可能会遇到问题。但同样,大多数现代操作系统最终都会回收打开的文件句柄。

现在,有些项目(IPC 结构,如 semaphoresshared memory 等)可能不会在粗鲁的导出中被清除,但如果您在以下位置使用它们,您通常会知道这些事情全部。

关于c - 调试时使用 exit() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46898201/

相关文章:

c - 如何在c中的32位操作系统中制作scanf()类型的函数?

c - 服务器到客户端通信 gRpc

C - 函数返回一个数组

iphone - 不是由应用程序代码引起的泄漏 - 它会获得批准吗?

在 tomcat 服务器上导入 72MB XAR 文件时出现 java 堆内存不足错误?

c - 检测预处理器宏中的空参数

android - 保留 fragment 泄漏

c++ - 立即退出 C++ 应用程序?

javascript - Casperjs 意外退出

java - Platform.exit() 在 JavaFX 的无限循环中无效