我有一个指针的这个矢量检查有效的指针
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