3

私はこれで半日過ごしましたが、ヴァルグリンドが不満を抱いている理由がわかりません.

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 に答える