SDL_FreeSurface() で使用していることがわかっているすべてのサーフェスをクリアすることをお勧めします。
同様に、すべて malloc を呼び出してヒープ領域を占有するポインタの配列を作成した場合、プログラムを終了しても、すべてのシステムで使用されている領域がすべてクリアされるわけではありません。
int **memspots[1024];
for (i = 0; i < 1024; i++) {
memspots[i] = malloc(1 * sizeof(int *)); // 1024 pointers to ints stored in heap memory
}
アプリケーションの最後に、同様の方法で無料で電話をかけたいと思うでしょう。
for (i = 0; i < 1024; i++) {
free(memspots[i]);
}
実行時であろうと終了時であろうと、可能な限りいつでも使用されているメモリを解放することは、ベスト プラクティスにすぎません。
SDL の GL テクスチャ関数は一時的に SDL_Surface を使用して (SDL_image から取得した) 画像データを収集し、最後に次のようにします。
if (surface != NULL) // Will be NULL if everything failed and SOMEHOW managed to get here
SDL_FreeSurface();
return;