0
コードを実行すると、ブレークポイントが発生したというエラーが表示されます。このブレークポイントがどこにあるのかはわかりません。誰も助けることができますか?Test Project.exeがブレークポイントを起動しました
void memLeak()
{
int *p = new int;
char * string1 = new char[20];
char * string2 = new char[25];
strcpy(string1, "Sheldon");
string2 = string1;
delete string2;
delete string1;
delete p;
}
int main(int argc, char* argv[])
{
memLeak();
_CrtDumpMemoryLeaks();
return 0;
}
ありがとうございます。私はdelete []を使いましたが、まだブレークポイントのエラーが出ています。私が気づいたことの1つは、string2 = string1をコメントアウトすると、ブレークポイントエラーがなくなったということです。私はstring2 = string1を間違って使用していますか? – brisk172
私はそれを見ます。ありがとうございました。 delete [] string1を削除して修正しました。ありがとうございました。 – brisk172
@ brisk172 'delete [] string1''を削除すると、元の' char'配列の1つが漏れているので、問題は隠されますが、修正されないことを理解する必要があります。このようなことを間違えてしまうのはとても簡単です。なぜなら、裸の 'new' /' delete'を使わないべき理由です。 'std :: string'、' std :: vector'などのために、このものを扱う標準コンポーネントを使用してください。 – BoBTFish