1

セグメンテーションに関する基本的な質問があります。次の疑似コードは、私の質問をよりよく説明しています。外部 API へのポインタがあり、それを実行すると segfault が発生します。次に何が起こるかという私の質問。ポインター API が指すメモリーは削除されますか? セグメンテーション違反が発生した後、OS は何をしますか?

int main () { 
    XAPI* api = new XAPI();

    // Assume: there is a segfault while in run()
    // What happens after segfault
    // does `delete api;` get executed?

    api->run();

    delete api;

    return 0;

}
4

1 に答える 1

1

のデフォルトの処理SIGSEGVは、終了してコア ダンプを生成することです。プロセスが強制終了され、関連するリソースが解放されます。

プログラムがシグナルを処理しない限り、次のコードは実行されません。

詳細については、signal(7)のマニュアル ページを参照してください。

于 2013-09-12T15:00:25.027 に答える