3

我已经在这呆了半天了,不明白 Valgrind 为何不高兴。

Valgrind 抱怨道:

==25658== Invalid write of size 4
==25658==    at 0x40242F: MyObject::copy(MyObject const&) (MyObject.cpp:96)
==25658==    by 0x402264: MyObject::operator=(MyObject const&) (MyObject.cpp:40)

MyObject.cpp:96 在我的复制功能中

 94 void MyObject::copy(const MyObject & other)
 95 {
 96         myVariable = other.myVariable;

MyObject.cpp:40 在赋值运算符中

 36 MyObject & MyObject::operator=(const MyObject & other)
 37 {
 38         if (this != &other)
 39         {
 40                 copy(other);
 41         }
 42         return *this; 
 43 }

MyVariable 是 String 类型

 17 class MyObject
 18 {
 19         public:
 20 
 21         /** My Variable */
 22         string myVariable;

我看不出 Valgrind 会发现这段代码有问题的任何原因。我错过了什么?

4

1 回答 1

0

原来这是我写的超出了数组的范围。

洋柴,谢谢你的评论。这就是问题所在。该对象从未被初始化,因为它被分配给了一个无效的数组索引。

于 2013-02-03T09:50:10.170 回答