2011-08-16 302 views
-2

我正在寫一個C++代碼在ROOT平臺上。我收到以下錯誤:這個錯誤是什麼意思?

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

我只是想知道這意味着什麼(一般)。

+2

分段違規 - 通常是某種內存訪問錯誤(指針運行錯亂)。沒有找到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特有的消息(這將有助於理解問題)。