Hey tout le monde, je reçois une erreur de tas de corruption, je ne peux pas comprendre.allouer et libérer un char * en 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);
Le code ci-dessus est la seule fois que je l'utilise pointeur c, dans _gcvt_s et pushFont() qui accepte simplement un char * comme premier paramètre, et met le texte à l'écran. Autre alors que je n'utilise pas c. Lorsque j'essaie de libérer c après la boucle principale (ce que je pense que je suis censé faire), j'obtiens une erreur disant que Visual Studio a acquis une erreur avec le tas (corruption de tas).
Commentant l'appel à pushFont je reçois toujours l'erreur.
Quelqu'un peut-il m'expliquer pourquoi la libération d'un caractère (le 1 octet que j'ai alloué sur le tas) me donnerait un tas de corruption?
Enfin ma boucle principale fait beaucoup de choses, un pote et je fais un jeu de pong avec WinSocket, le reste du corps principal est la boucle pour le jeu. Je ne pensais pas qu'il était nécessaire de poster, mais je vais mettre à jour mon post avec la boucle principale entière si cela est nécessaire, mais je crois que je suis juste à côté de ma compréhension de malloc() et free().
Merci à tous,
ne devrions-nous pas retag cette question de "C++" à "C"? –