-2

ROOTプラットフォームで C++ コードを書いています。次のエラーが表示されます。

*** Break *** segmentation violation
gdb not found, need it for stack trace
Root > Function main() busy flag cleared

これが何を意味するのか知りたいだけです(一般的に)。

4

2 に答える 2

4

一般に、「セグメンテーション違反」とは、自分に割り当てられていないメモリにアクセスしたことを意味します。通常、浮遊ポインタがその理由です。

残りは、欠落している gdb に関する Linux 固有のメッセージです (問題を理解するのに役立ちます)。

于 2011-08-16T19:54:11.620 に答える
3

通常、これは、権限のないメモリに書き込み (または読み取り) を行ったことを意味します。それは単に無効なメモリであるか、(プラットフォームがそのような概念をサポートしている場合) 所有しているメモリの外にあります。

これの一般的な原因は、ポインターを解放した後に再度使用することです。

Foo * pFoo = new Foo();
pFoo->Bar(); // should be fine.
delete pFoo; // pFoo now points to memory that may or may not still be an actual Foo.
pFoo->Bar(); // undefined behavior.
于 2011-08-16T19:56:03.603 に答える