Привет всем, я получаю ошибку повреждения кучи, которую я не могу понять.
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);
Приведенный выше код - единственный раз, когда я использую указатель c в _gcvt_s и pushFont (), который просто принимает char * в качестве первого параметра и выводит текст на экран. Другое то, что я не использую c. Когда я пытаюсь освободить c после основного цикла (что, я думаю, я должен сделать), я получаю сообщение об ошибке, в котором говорится, что Visual Studio получила ошибку с кучей (повреждение кучи).
Комментируя вызов pushFont, я все еще получаю сообщение об ошибке.
Может кто-нибудь объяснить мне, почему освобождение символа (1 байт, который я выделил в куче) может привести к повреждению кучи?
Наконец, мой основной цикл делает много вещей, приятель, и я создаю игру в понг с WinSocket, остальная часть основного корпуса - цикл для игры. Я не думал, что это нужно было публиковать, но я буду обновлять свой пост всем основным циклом, если это необходимо, но я думаю, что я просто не согласен с моим пониманием malloc () и free ().
Спасибо всем,