2012-04-11 13 views
1

私はUnicodeをサポートするC++のhelloの世界を作ろうとしていますが、ちょっと立ち往生しています。TCHARポインタを削除する

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

間違った削除が使用されたために、interwebsを調べて、誰かが言った。私は両方の削除を試みたが、それは同じメッセージを与える。

わかりやすかったですか?

コード私が試した:

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

も試してみました:

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

答えて

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

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

それはあなたのメモリを所有していないことから、後は

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

ただ、違法な削除を呼び出すようなものです。

+0

Ohh snap。本当にありがとう。私は学ぶべきことがたくさんある。 :P – RandomClown

4

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

+0

お役立ち情報私はいくつかのデータへのポインタが範囲外になる前に削除しなければならないと思った。 – RandomClown

関連する問題