A ver si aprendemos a ser menos vagos y a sacarnos las castañas del fuego, en vez de pedir a los demás lo hagan por nosotros. Lo que pides es muy fácil:
Buscas en Google o en cualquier buscador "Simple Machines Forum"
Entras en su página web y te comes toda la documetnación
En efecto, al reservar memoria dinámicamente utilizando el operador new, ésta no es liberada automáticamente al salir del ámbito de la función.; por lo que al no liberarse explícitamente (usando delete), cada vez que se llema a la función, se reserva más memoria, y tienes como resultado una bonita fuga de memoria que puede hacer que tu ordenador pete o vaya a pedales.
Buff, deberías repasarte cuando hay que utilizar las llaves, además de que hay un 'case 1:' que no sé muy bien qué pinta.
También te aconsejo que vayas comprobando que el programa funciona correctamente conforme lo vas haciendo, en vez de esperarte al final. De este modo podrás localizar mejor los fallos.