La principale cause des fuites mémoire en C++ est de ne pas utiliser le RAII :
http://arb.developpez.com/c++/raii/shared_ptr/.
Ton probleme me fait penser à une allocation de ressource dans une boucle, voir même dans la boucle principale.
Est-tu sûr de n'ouvrir les images dont tu as besoin pour ton interface qu'une seul fois ?
C'est clair que si tu ouvre la même image pour la mettre en mémoire à chaque itération, il n'est pas étonant que tu monte de 20Mo par seconde ! :mouarf:
Une fuite mémoire est dû à une allocation dynamique, mais cette allocation peut très bien être cachée dans une fonction (d'ouverture d'image pour SDL, par exemple), attention donc à toujours utiliser les fonctions associées pour liberer les ressources.