Heap Corruption beim Aufruf von delete[]
-
Hallo,
mein Problem ist, dass ich beim freigeben der Arrays ein Heap Corruption bekomme. Das komische dabei ist, dass dies nur bei 1 von 2 Variablen auftritt
Hier der Code:
char *charType = new char[GetWindowTextLength(hWndComboboxR)+1]; char *charR = new char[GetWindowTextLength(hWndComboboxType)+1]; ComboBox_GetText(hWndComboboxType, charType, strlen(charType)+1); ComboBox_GetText(hWndComboboxR, charR, strlen(charR)+1); //Code... //Speicher freigeben delete[] charType; delete[] charR; //Heap CorruptionDie API-Funktionen seien mal außer Acht gelassen, denn die Funktionieren problemlos. Die länge, sowie der Inhalt des Char-Arrays sind so, wie sie sein sollten.
Grüße
-
Nutz std::vector.
Dein Problem ist, dass das strlen in Zeile 3 und 4 einen falschen Wert zurückgibt und deshalb die API-Funktion wohl irgendwelche Heapverwaltungsstrukturen kaputtschreibt.
-
Hallo,
Danke für die schnelle Antwort.
Genau an strlen() lags. Hätte ich mir denken können...

-
Der Code ist vor allem nicht sicher. Was, wenn sich der Text (und somit die Länge) vom
GetWindowTextLengthAufruf zumComboBox_GetTextAufruf ändert? Unwahrscheinlich, aber möglich.
-
Glaub ich nicht. Kannst ja zum Testen mal zwischen den beiden Instruktionen ein Sleep(5000); einbauen. Ich glaube, in dieser Zeit wird die GUI nicht reagieren und nicht bedienbar sein.