Hey alle, ich bekomme einen Haufen Korruption Fehler kann ich nicht herausfinden.Zuweisen und Freigeben eines Char * in C++
char * c = (char *) malloc(1);
// main loop
_gcvt_s(c, 100, ball->get_X_Direction(), 10);
if(pushFont(c, (SCREEN_WIDTH - 30), (SCREEN_HEIGHT - 40), message, screen,
font, textColor) == false)
{
//return 1; // error rendering text.
}
// end main loop
free(c);
Der obige Code ist die einzige Zeit, I c Zeiger verwenden, in _gcvt_s und pushFont(), die einfach ein char * als ersten Parameter übernimmt, und setzt den Text auf dem Bildschirm. Ansonsten benutze ich nicht c. Wenn ich versuche, c nach der Hauptschleife freizugeben (was ich glaube, dass ich das tun soll), bekomme ich eine Fehlermeldung, dass Visual Studio einen Fehler mit dem Heap (heap corruption) erfasst hat.
Kommentieren Sie den Aufruf von PushFont Ich erhalte immer noch den Fehler.
Kann mir jemand erklären, warum das Freigeben eines Zeichens (das 1 Byte, das ich auf dem Heap zugewiesen habe) mir einen Haufen Korruption geben würde?
Schließlich macht meine Hauptschleife eine Menge Sachen, ein Buddy und ich machen ein Pong-Spiel mit WinSocket, der Rest des Hauptkörpers ist die Schleife für das Spiel. Ich dachte nicht, dass es notwendig ist zu posten, aber ich werde meinen Beitrag mit der gesamten Hauptschleife aktualisieren, wenn es notwendig ist, aber ich glaube, ich bin gerade mit meinem Verständnis von malloc() und free().
Dank alle,
sollten wir diese Frage nicht von "C++" auf "C" umstellen? –