当malloc()失败时,最好的处理错误的方式是什么?如果它失败了,我想立即退出程序,通常我会使用exit()来做到这一点。但在这种特殊情况下,我不确定是否应该使用exit()。
当malloc()失败时,最好的处理错误的方式是什么?如果它失败了,我想立即退出程序,通常我会使用exit()来做到这一点。但在这种特殊情况下,我不确定是否应该使用exit()。
exit
或abort
都是绝对不可接受的。如果您正在编写库代码,则应该优雅地处理任何分配失败,释放尝试操作中获取的任何内存或其他资源,并向调用者返回错误条件。然后,调用程序可能会决定exit
,abort
,拒绝需要过多内存的任何命令,释放一些不必要的数据并重试,或适合应用程序的其他操作。malloc()
返回NULL
,那么这意味着分配内存失败了。你需要处理这个错误情况。我个人认为因为分配失败就退出整个进程有些过度了,可以用其他方式来解决。这取决于核心文件是否有用。如果没有人打算分析它,那么你可以简单地使用_exit(2)
或exit(3)
。
如果程序有时会在本地使用,并且您打算分析生成的任何核心文件,则可以使用abort(3)
。
您始终可以有选择地使用条件,因此,使用--debug
时使用abort(3)
,而不使用它则使用exit。
_exit()
,因为这意味着在 atexit()
注册的清理函数将不会运行... - Jonathan Leffler