0

我有某种形式的 std::vector

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

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

4

1 回答 1

3

最有可能导致这样的事情是过度索引数组访问未指向正确位置的指针。现在,找到发生这种情况的位置并非易事,但是像 valgrind 这样的工具可以提供帮助。

如果未正确终止或未正确应用保持缓冲区的大小,使用 C 样式字符串也很容易导致字符串过度索引

另一个原因可能是双重删除/释放也会破坏内存的指针

于 2012-06-14T16:46:21.077 回答