[英]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.