2011-08-16 20 views
-2

私はROOTプラットフォームにC++コードを書いています。次のエラーが表示されています:このエラーは何を意味しますか?

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

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

+2

セグメンテーション違反 - 通常、何らかの種類のメモリアクセスエラー(ポインタ実行amok)。 gdbが見つかりません - gnuデバッガーです。インストールされていないか、システムパスに表示されていないようです。 – arunkumar

答えて

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. 
3

一般に、「セグメンテーション違反」とは、割り当てられていないメモリにアクセスすることを意味します。通常、漂遊ポインタが原因です。

残っているのは、gdbが見つからないというLinux固有のメッセージです(問題を理解するのに役立ちます)。

関連する問題