我已经在这个问题上待了半天了,想不通为什么 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 会发现此代码有问题的任何原因。我错过了什么?
最佳答案
原来是我写的越界了
Yochai,谢谢你的评论。这就是问题所在。该对象从未被初始化,因为它被分配给了一个无效的数组索引。
关于c++ - Valgrind 说写入无效,但我只是分配给一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14670983/