Valgrind说无效写,但我只是分配给一个字符串

时间:2013-02-03 09:11:46

标签: c++ valgrind

我已经在这里待了半天,无法弄清楚为什么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会发现此代码有问题的原因。我错过了什么?

1 个答案:

答案 0 :(得分:0)

原来是我写出了一个数组的界限。

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