C++ 在没有coredump或分段错误的情况下退出程序
我想知道是否有一些方法可以在不引起C++ 在没有coredump或分段错误的情况下退出程序,c++,exit,terminate,quit,C++,Exit,Terminate,Quit,我想知道是否有一些方法可以在不引起segfault或core dump的情况下突然退出/终止程序 我查看了terminate()和exit()和返回0。它们似乎都不适用于我的项目 if(this->board.isComplete()) { Utils::logStream << " complete "<< endl; this->board.display(); exit(0); //std::terminate(
segfault
或core dump
的情况下突然退出/终止程序
我查看了terminate()
和exit()
和返回0
。它们似乎都不适用于我的项目
if(this->board.isComplete())
{
Utils::logStream << " complete "<< endl;
this->board.display();
exit(0);
//std::terminate();
//abort();
//raise(SIGKILL);
return true;
}
if(此->board.isComplete())
{
UTIL:UnLogStase <代码> EXIT()/BABUTE()/<代码>,类似的函数通常不是终止C++程序的正确方法。正如您所注意到的,它们不运行C++析构函数,使文件流打开。如果您真的必须使用<代码> Ext(),然后注册清理函数是个好主意,但是,我强烈建议您切换到C++异常。使用异常,调用析构函数,如果在终止之前有一些顶级清理,则总是可以在代码>主()上捕获异常。
,执行清理,然后正常返回错误代码。这也可以防止代码转储
int main()
{
try
{
// Call methods that might fail and cannot recover.
// Throw an exception if the error is fatal.
do_stuff();
}
catch(...)
{
// Return some error code to indicate the
// program didn't terminated as it should have.
return -1;
}
// And this would be a normal/successful return.
return 0;
}
退出(0)
应该可以工作(对于大多数工作定义来说……这取决于是否有“需要”完成的关机操作)-尝试时会发生什么?@Tony D exit(0)似乎符合我问题的要求。但程序从未关闭它打开的文件。@Ben,你可能想澄清一下。目前来看,你的评论毫无意义。忘记释放内存本身不会导致segv。@Ben不,我相信我没有使用任何内存。如果是,我怎么能删除所有内存?@DavidO the exit(0)不提供SEGFULT有效,我一定是做错了什么。谢谢。我尝试了你的方法,它正按照我想要的方式工作。酷,一定要“接受”我的答案,@flyOverOthers;)