我有一个表格
的某个类的std :: vectorclass A{
public:
A():i(someNumber){}
void useI() const{
//do something with i
}
// No destructor defined
private:
int i;
};
我的代码循环遍历每个数据点,并在数组中的每个元素上调用useI()
。经过几百次迭代,变量i
被破坏了,我不明白为什么。情况可以复制。我知道这里没有太多细节,但是对于要检查什么的任何建议都深表赞赏。
答案 0 :(得分:3)
最容易引起这种情况的是过度索引指向不指向正确位置的指针的数组。现在,找到发生这种情况并非易事,但像valgrind这样的工具可以提供帮助。
如果没有正确终止或保持缓冲区的大小应用不正确,使用C风格的字符串也很容易导致过度索引字符串
另一个原因可能是双删除/释放也会破坏内存的指针