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

标签 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 会发现此代码有问题的任何原因。我错过了什么?

最佳答案

原来是我写的越界了

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

关于c++ - Valgrind 说写入无效,但我只是分配给一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14670983/

相关文章:

c++ - C++ 中全局数组初始化时的语法和缺少类型说明符错误

c - 艰难地学习 C,Ex20 - Makefile 问题?

c - 读取大小无效 - 查找命令行平均值

c++ - 内存泄漏 - OpenMP

c++ - 为什么我的带有std::pow的整数数学给出错误的答案?

c++ - 具有多级继承的大型 C++ 项目的文件/文件夹布局

c++ - 显式传递基类型

c++ - 继承一个类,该类也继承与该类相同的基类

c - 类似于 scanf 的函数中的内存泄漏问题

C - 循环后释放字符串