私はROOTプラットフォームにC++コードを書いています。次のエラーが表示されています:このエラーは何を意味しますか?
*** Break *** segmentation violation
gdb not found, need it for stack trace
Root > Function main() busy flag cleared
私はこのことが(一般的に)何を意味するのかを知りたいだけです。
私はROOTプラットフォームにC++コードを書いています。次のエラーが表示されています:このエラーは何を意味しますか?
*** Break *** segmentation violation
gdb not found, need it for stack trace
Root > Function main() busy flag cleared
私はこのことが(一般的に)何を意味するのかを知りたいだけです。
一般的には、あなたが許可を得ていないメモリに書き込んだ(または読んでもよい)ことを意味します。どちらかというと、無効なメモリか(プラットフォームがそのような概念をサポートしている場合)、自分が所有するメモリの外です。
一般的な原因は、ポインタを解放してからもう一度使用することです。
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.
一般に、「セグメンテーション違反」とは、割り当てられていないメモリにアクセスすることを意味します。通常、漂遊ポインタが原因です。
残っているのは、gdbが見つからないというLinux固有のメッセージです(問題を理解するのに役立ちます)。
セグメンテーション違反 - 通常、何らかの種類のメモリアクセスエラー(ポインタ実行amok)。 gdbが見つかりません - gnuデバッガーです。インストールされていないか、システムパスに表示されていないようです。 – arunkumar