我想殺死我的C++程序並立即終止而不激活任何類型的析構函數,特別是靜態和全局變量,但是我想退出狀態爲0 - abort()
對我不起作用。如何中止一個C++程序並退出狀態0?
有沒有人有解決方案? 謝謝
我想殺死我的C++程序並立即終止而不激活任何類型的析構函數,特別是靜態和全局變量,但是我想退出狀態爲0 - abort()
對我不起作用。如何中止一個C++程序並退出狀態0?
有沒有人有解決方案? 謝謝
_Exit(0)
如何從stdlib.h
。 (演示:http://ideone.com/ecCgC)
從C++ 11 n3290 - §18.5:
[[noreturn]] void _Exit(int status) noexcept;
該程序而不執行析構自動的,螺紋的對象終止,或 靜態存儲持續時間和不調用傳遞給atexit對函數( )
這實際上是在C99中定義的,儘管如此,實際上它在大量的Pre-C++ 11實現中起作用。
用途:
#include <cstdlib>
#include <iostream>
struct test {
~test() {
std::cout << "Goodbye world" << std::endl;
}
};
int main() {
test t;
_Exit(0);
}
我認爲如果您要澄清哪些版本的C++會這樣做並且不會工作,那麼這會更有幫助。 – 2012-01-10 14:20:15
@ Styne666:n3290表示C++ 11。但該功能是C99的一部分。甚至在此之前它可能會工作。 – kennytm 2012-01-10 14:25:48
爲什麼'中止()'你不工作,如果我可以問嗎? – 2012-01-10 14:15:17
爲什麼你不想激活析構函數? – 2012-01-10 14:15:25
「'該函數生成SIGABRT信號,默認情況下程序終止向主機環境返回不成功的終止錯誤代碼。」 – WeaselFox 2012-01-10 14:15:53