2012-04-11 226 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 2012-04-15 04:11:42

4

如果您撥打new,您只需致電delete,因爲您沒有。您無需在此處致電delete
你的字符串在一個實現定義的內存區域上創建,而不是動態內存(又名堆)

+0

很高興知道。我認爲我必須在指向某些數據的指針超出範圍之前刪除它。 – RandomClown 2012-04-15 04:12:57