我正在使用C ++连接C程序(main()
在C中)。在我的代码中的某些点我想停止执行程序。现在我想知道,我怎么能干净利落地做到这一点?
目前我打电话给std::terminate()
,但更多的是缺乏更好的想法。让我烦恼的主要问题是,即使我没有释放内存(因为它在程序终止时也被释放了,对吧?)但是MSVS即时调试器会弹出,我收到一个丑陋的错误消息以不寻常的方式终止运行时。
编辑:因为这引起了混淆:在这种情况下,无法从main()
返回return 0
。
答案 0 :(得分:7)
如果您担心清理和调用destuctors,那么
exit(EXIT_SUCCESS); // or EXIT_FAILURE
函数exit
调用descructors并清理自动存储对象(在全局范围内声明的对象)。它还调用传递给atexit
的函数。
函数abort
对异常退出很有用,不会清理任何内容。它不会调用传递给atexit
的函数。
C中不存在函数terminate
。当您遇到异常并且无法处理它但完成程序时,它非常有用。
答案 1 :(得分:3)
main
函数是它开始的地方,main
函数通常是它应该结束的地方。如果您使用return 0;
,则表示已成功退出。
int main(void) {
//init
//do stuff
//deinit
return 0; // bye bye
}
您也可以使用exit(0);
,但如果您的退出点遍布整个地方,则会使调试变得更加困难。