みなさん、ヒープ破損エラーが発生しています。わかりません。
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);
上記のコードは、_gcvt_s と pushFont() で c ポインターを使用する唯一の時間です。これは、char * を最初のパラメーターとして単純に受け入れ、テキストを画面に表示します。それ以外はcを使用しません。メイン ループの後で c を解放しようとすると (そうすべきだと思います)、Visual Studio がヒープでエラーを取得した (ヒープの破損) というエラーが表示されます。
pushFont への呼び出しをコメントアウトしても、まだエラーが発生します。
文字 (ヒープに割り当てた 1 バイト) を解放するとヒープが破損する理由を誰かに説明してもらえますか?
最後に、私のメイン ループは多くのことを行います。バディと私は WinSocket でピンポン ゲームを作成しています。本体の残りの部分はゲームのループです。投稿する必要があるとは思いませんでしたが、必要に応じてメインループ全体で投稿を更新しますが、malloc() と free() の理解が不十分だと思います。
皆さんありがとう、