2017-01-04 8 views
1

シンプルなhttpサーバベースのソケットを作成しました。 しかしそれも、このようにメイン関数でreturn 0;で終了することはできません。メインの最初の行として0を返してもC++プログラムを終了できません

int main(int argc, wchar_t* argv[]) 
{ 
    return 0; 
} 

プログラムはdoexit(code, 0, 0);(*function_to_call)();でブロックされます。

(ntdll.dllの)サービスや機能

私は私のプロジェクトの設定に問題があることを疑う無効なパラメータを送信:私は直接のcmdウィンドウを閉じると は、警告があります。しかし、私は理由を見つけることができませんでした。これをシミュレートする

+4

推測:いくつかのグローバルオブジェクトがあり、そのdtorが問題を引き起こしています。 –

+3

私の精神力は、どこかにグローバル変数や静的メンバーとしてC++クラスのインスタンスがあることを教えてくれます。デストラクタは主な復帰後に何か変わったことをしています。 (btw、これはまさに私のチームの人々がグローバルインスタンスを使用するのをやめさせる理由です) – selbie

+1

_ "プログラムは" _にブロックされます_あなたが質問に含まれていないコード!ちょうど私たちの魔法の数式を思い出させる:[mcve] – Melebius

答えて

4

単純なケースは次のとおりです。

struct A{ ~A() { while(true); } }; 
A a; 

int main() {} 

mainが終了したときにaデストラクタ関数が呼び出されます。しかし、この機能は何らかの理由でブロックされ、プログラムがブロックされます。

関連する問題