0

私の質問は Allegro 5 C++ に関連しています。画面にテキストを描画する必要があるコードの一部を次に示します。私はすべての宣言を行いましたが、エラーは間違いなくコードのこの部分にあります。

したがって、最初にグローバル変数を宣言しALLEGRO_FONT * font; ました。メインでこの関数を呼び出しましたal_init_font_addon();

そして、これはテキストを描画する別の関数です。

    void draw (){
        int score=0 ;
        while (!GetAsyncKeyState(VK_ESCAPE)){
          al_clear_to_color(al_map_rgb( 0 , 0 , 0));
          al_init_ttf_addon();
          font = al_load_font ("font.ttf" , 24 , NULL);
          al_draw_textf(font , al_map_rgb(255 , 0 , 255) , 200 , 200 , ALLEGRO_ALIGN_CENTRE   , "SCORE: %d" , score );
          al_flip_display();
          score +=10;
        }
    }

問題は、while ループの 507 ステップでこのアプリがクラッシュすることです。

4

1 に答える 1

1

ループごとに新しいフォントを初期化していますが、使い終わったときにリソースの割り当てを解除していません。

代わりに、ループの前に and を 1 回だけ呼び出しal_init_ttf_addonal_load_fontループ内で使用します。使い終わったら、忘れずにフォントを解放してください。実際にはal_init_ttf_addon、代わりにプログラムを初期化するとき、つまりmainイベント ループに入る前に関数内で呼び出すことをお勧めします。

于 2013-06-11T17:36:49.293 に答える