0

Pair 要素へのポインターへのポインターの動的配列が必要です。

int m_size = 0;
Pair** ar = new Pair*[++m_size];
*ar[0] = Pair(key, data);

ここで私は得る: lab3.exe の 0x013729db で未処理の例外: 0xC0000005: アクセス違反書き込み場所 0xcdcdcdcd.

これは、MyString のオーバーロードされた演算子で発生しました (例外がスローされたときの HERE マーク):

MyString & MyString::operator = (const MyString & refMyString){
HERE: this->m_pStr = refMyString.m_pStr;
    return *this;
}

私のクラス(私たちの目的のために少し単純化されています):

class Pair{
    MyString m_key;
    Data* m_data;
}


class MyString
{
    char* m_pStr;
}

そして、ここに私がデバッガーで得たものがあります:

http://sdrv.ms/ZwkZ9P

http://sdrv.ms/17eoGp6

さて、私が見る限り、Pair** ar = new Pair*[++m_size] を実行すると、Pair インスタンスのスペースへのポインターへの新しいポインターが作成されました。しかし、それはメモリ内の単なるスペースです。そして、操作しようとすると失敗します。

そして、何をするかは私にとって謎です。私たちを手伝ってくれますか?

4

2 に答える 2