我有一個指針的這個矢量檢查有效的指針
std::vector<Connection *> List;
typedef struct {
int Initialized;
....
} Connection;
我的計劃是核心在這5條線路的地方傾倒。可能是什麼問題呢?
1 for (size_t i = 0; i < List.size(); i++) {
2 if (List[i]->Initialized) {
3 counter++ ;
4 }
5} /* for() */`
List[i]
指向一些垃圾的位置。所以當你訪問List [i] - > Initialized時,它的核心轉儲。我可以在這裏檢查NULL
以防止核心轉儲嗎?我的理解是檢查NULL
將無法正常工作,因爲指針可能指向垃圾並仍然有效。那麼我可以在第2行之前添加一些檢查以防止核心轉儲?的
List.size()
擁有一個龐大的數字,所以for循環永遠不會結束?
我在這裏是否缺少一些其他場景?我們不知道是什麼導致了這個問題,所以不能重現它。出於某種原因,我無法在此係統上使用gdb或dbx。
如果你不能複製它,那麼你爲什麼在意...... – luk32 2014-10-28 20:25:17
你不能檢查你不能建立的不變量。只有在你做了這些事情之後,纔會依賴一些變量進行初始化。 – Deduplicator 2014-10-28 20:25:45
gdb是你的朋友! – KRUKUSA 2014-10-28 20:26:23