簡體   English   中英

vector::size 和分段錯誤

[英]vector::size and Segmentation fault

為什么這段代碼會拋出分段錯誤?:/

listeners = new vector<Listener*> ();

... /* other code */

if (listeners != NULL) {
int i = listeners->size();
}

僅僅因為指針不是NULL並不意味着它指向一個有效的vector<Listener*> object。

通過valgrind運行程序以檢測 memory 損壞問題,並確保您也通過調試器運行代碼。

如果您仍然有問題,請發布一個重現問題的測試(而不是沒有問題的小代碼片段)。

比使用 valgrind 更容易的是在分配后立即移動listeners->size()調用,然后查看它是否存在段錯誤。 如果不是,請將其移動幾行代碼,然后重試,重復。 如果它出現段錯誤,您只是找到了導致它的行。 也許你已經用指針做了一些事情,這是一種找到那段代碼的方法。 二分法

可能並不總是有效,它更像是一種啟發式。

vector<Listener*> listeners; 可能會為您節省一些問題或使代碼中斷的原因更加明顯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM