0

Dr. Memory を使用してコードをデバッグしています。次のメッセージが表示されます。

INVALID HEAP ARGUMENT: allocated with operator new[], freed with operator delete

ただし、delete[]代わりにを使用するとdelete、同じエラーが発生します。エラーは次の行で発生します。

for (int x = 0; x < width; ++x)
{
    delete data[x];
}
delete [] data;

変数dataは次のように割り当てられています。

data = new char*[width];
for (int i = 0; i < width; ++i)
{
    data[i] = new char[1];
}

誰か助けてくれませんか?

4

3 に答える 3

1

現在、要素を割り当てます

data[i] = new char[1];

そしてそれらを削除します

delete data[x];

で割り当てたnew[]ので、 で削除する必要がありますdelete []

delete [] data[x];
于 2015-10-02T02:12:28.777 に答える
0

new[]2 番目の( data[i] = new char[1]) も一致させる必要があります。

for (int x=0; x<width; ++x){
    delete [] data[x];
}
delete [] data;
于 2015-10-02T02:13:59.690 に答える
0

CではなくC ++を使用しているため...

STL と std::string を使用してプログラム内で std::string のベクトルを作成するようにコードをリファクタリングします。

std::string を使用すると、メモリ リークが解消される可能性があります。

于 2015-10-02T02:40:56.043 に答える