C++コードを実行しているときにsegfaultsが発生しました。私はポインタを削除するプログラム内の行に問題を切り分けました。ここでは、同じエラーが発生し、簡単な例です:Segfaultがポインタを削除するとき
int main()
{
int* pointer=0;
int number = 3;
pointer = &number;
delete pointer;//This line causes a segmentation fault
pointer=0;
return 0;
}
若干の修正が期待どおりに動作するコードを生成します。最初は、セグメンテーションフォルトが発生し、第二にはない理由
int main()
{
int* pointer=new int(3);
delete pointer;//This line now works
pointer=0;
return 0;
}
誰かが説明できますか?私はポインタが数値変数のアドレスに割り当てられているので、ポインタが無効ではないことを知っています。
最初に 'new'が割り当てられていないので、' delete'を呼び出すことは決して正しいことではありません。 – ildjarn