サーフェスを解放する。
void SDL_FreeSurface(SDL_Surface* surface);
surfaceには解放するサーフェスを指定する。
ビデオサーフェス(SDL_GetVideoSurface()で取得したもの)は解放してはいけない。
↓サンプルで使用している画像
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
int main(){
/* ビデオサーフェス */
SDL_Surface* videoSurface = NULL;
/* イメージサーフェス */
SDL_Surface* imageSurface = NULL;
/* 転写先矩形 */
SDL_Rect rect;
/* 初期化処理 */
SDL_Init(SDL_INIT_EVERYTHING);
/* ウインドウオープン */
SDL_SetVideoMode(640, 480, 0, SDL_HWSURFACE | SDL_DOUBLEBUF);
/* ビデオサーフェスの取得 */
videoSurface = SDL_GetVideoSurface();
/* 画像の読み込み */
imageSurface = IMG_Load("penguin_mgc_pic.jpg");
rect.x = 100;
rect.y = 15;
/* 画像をビデオサーフェスに転写 */
SDL_BlitSurface(imageSurface, &(imageSurface->clip_rect), videoSurface, &rect);
/* イメージサーフェスの削除 */
SDL_FreeSurface(imageSurface);
/* 二重で削除するとエラーになる。 */
/* SDL_FreeSurface(imageSurface); */
/* NULLを指定してもエラーにならない。 */
SDL_FreeSurface(NULL);
/* だから、サーフェスを使いまわす場合は、SDL_FreeSurface()後にNULLをセットしておくと安心。 */
imageSurface = NULL;
SDL_FreeSurface(imageSurface); /* ←エラーにならない */
/* フリップ */
SDL_Flip(videoSurface);
/* 3秒ウエイト */
SDL_Delay(3000);
/* 終了処理 */
SDL_Quit();
return 0;
}

プログラムの説明はIMG_Loadを参照。
画像の読み込みなどでサーフェスを作成した場合、それが不要になったら、SDL_FreeSurface()で確実に解放する。
(解放しないとメモリリークの原因になる。)