我有某种形式的std::vector

class A{
 public:
 A():i(someNumber){}
 void useI() const{
   //do something with i
 }
 // No destructor defined
 private:
  int i;
};

我的代码循环遍历每个数据点,并对数组中的每个元素调用useI()。经过几百次迭代,变量i被破坏了,我不知道为什么。这种情况可以复制。我知道这里没有太多的细节,但是任何关于检查内容的建议都非常感谢。

最佳答案

最有可能导致这种现象的是对指向不指向正确位置的指针的数组访问进行过索引。现在,找到发生这种情况的地方并不容易,但是像valgrind这样的工具可以帮助我们。
如果没有正确终止或保持缓冲区的大小不正确应用,使用C样式字符串也很容易结束对字符串的过度索引。
另一个原因可能是指针的双重删除/释放也会损坏内存

10-05 20:00