调试时使用 exit() 函数

using exit() function while debugging

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

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

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

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

在极端情况下,这可能会使 RAM 与进程无关,但会临时使用,导致操作系统累积停滞。这实际上只是 "very" 遗留操作系统(认为 20 岁以上)中的一个主要问题。

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

现在,有些项目(IPC 结构,如 semaphores, shared memory 等)可能不会在粗鲁的出口中被清除,但如果您在全部.