0
なぜこのコードの結果がヒープの破損になるのか誰かが説明できますか?ポインタを削除するとヒープの破損が発生する
string someText = "hello hello";
char **arrayOfCharPtr = new char*[5];
arrayOfCharPtr[0] = new char[someText.length()];
strcpy(arrayOfCharPtr[0], someText.c_str());
delete[] arrayOfCharPtr[0];
ありがとうございます!
あなたの配列は1文字短いです、 'strcpy'によってヌル文字がコピーされるスペースはありません。 – user657267
Ok、length()+ 1しかし、なぜこれがメモリリークを引き起こしますか? strcpy行自体はエラーを起こさない。それを引き起こすのは削除行です。 arrayOfCharPtr [0]の内容がどれだけ長くても、それを削除できないのはなぜですか? – Johan
"strcpy行自体はエラーを起こさない"未定義の動作へようこそ。物事はうまくいくように見えますが、ソースから数キロ離れた場所で爆発します。 – user657267