在调试时使用exit()函数

时间:2017-10-23 20:44:29

标签: c memory-leaks exit

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

当我开发新例程时,我会分配应该在程序结束时清理的资源。但是为了看看新例程的进展情况,我打印出各种各样的东西,然后打电话: 出口(0);

我的问题是,当我使用这些毫不客气的退出命令编译代码时,linux环境是否足够智能解除在程序结束时取消分配的资源?或者我在系统内存中发生泄漏?

1 个答案:

答案 0 :(得分:1)

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

在极端情况下,这可能会使RAM与进程无关,但暂时使用会累积到操作系统中。这实际上只是“非常”遗留操作系统中的一个主要问题(想想20多岁)。

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

现在,有一些项目(IPC结构,如semaphoresshared memory等)可能无法在一个毫不客气的退出中清理,但是你通常会知道这些事情,如果你正在使用它们。