1

Unicode をサポートする C++ の hello world を作成しようとしていますが、少し行き詰まっています。

TCHAR [char配列だと思います]へのポインターを作成し、それを使用した後、それを削除しようとしました。と言ってクラッシュしますExpression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

インターウェブをチェックすると、間違った削除が使用されたためだと誰かが言った. 両方の削除を試みましたが、それでも同じメッセージが表示されます。

明らかな何かを見逃しましたか?

私が試したコード:

TCHAR *str=TEXT("おはよう, World!");
delete[] str;

また試しました:

TCHAR *str=TEXT("おはよう, World!");
delete str;
4

2 に答える 2

6
TCHAR *str=TEXT("おはよう, World!");

何も割り当てていないので、メモリを削除する必要はありません。単に電話しないでくださいdelete[]TEXTはマクロであり、自分で管理するはずのメモリを返す関数ではありません。

後に delete を呼び出すようなものです

char* x = "bla";
delete[] x;

メモリを所有していないため、違法です。

于 2012-04-11T07:30:30.103 に答える
4

deleteを呼び出した場合にのみ呼び出す必要があります。呼び出しnewていないためです。ここに電話する必要はありませんdelete
ここでの文字列は、動的メモリ(別名ヒープ)ではなく、実装で定義されたメモリ領域に作成されます

于 2012-04-11T07:31:23.860 に答える