2012-04-11 2 views
1

Ich versuche, eine C++ Hallo Welt, die Unicode unterstützt, zu machen, aber ich bin ein wenig fest.Löschen TCHAR Zeiger

Ich machte einen Zeiger auf ein TCHAR [Ich denke, es ist ein Char-Array], und nach der Verwendung versuche ich, es zu löschen. Es stürzt ab und sagt Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse).

Überprüfen Sie die Interwebs, jemand sagte, es war, weil das falsche Löschen verwendet wurde. Ich habe versucht beide Löschungen, aber es gibt immer noch die gleiche Nachricht.

Habe ich etwas offensichtlich übersehen?

Code I versucht:

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

auch versucht:

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

Antwort

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

Sie nichts Zuteilung, also gibt es keine Notwendigkeit, den Speicher zu löschen. Rufen Sie einfach nicht delete[]. TEXT ist ein Makro, keine Funktion, die etwas Speicher zurückgibt, den Sie selbst verwalten sollen.

Es ist wie der Aufruf löschen, nachdem

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

nur illegal, da Sie den Speicher nicht besitzen.

+0

Ohh Snap. Vielen Dank. Ich habe viel zu lernen. : P – RandomClown

4

Sie müssen nur delete anrufen, wenn Sie new angerufen haben, seit Sie nicht. Sie müssen delete hier nicht anrufen.
Ihre Zeichenfolge hier wird auf einer Implementierung definierten Speicherbereich und nicht dynamischen Speicher erstellt (aka Heap)

+0

Gut zu wissen. Ich dachte, ich müsste löschen, bevor ein Zeiger auf einige Daten den Gültigkeitsbereich verlässt. – RandomClown