Лучше всего очистить все поверхности, которые, как вы знаете, используете, с помощью 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]);
}
Лучше всего освобождать любую используемую память в любое время, когда это возможно, будь то во время выполнения и, конечно, при выходе.
Моя функция текстуры GL для SDL временно использует SDL_Surface для сбора некоторых данных изображения (взятых из SDL_image) и имеет это в конце:
if (surface != NULL) // Will be NULL if everything failed and SOMEHOW managed to get here
SDL_FreeSurface();
return;