Fixed! (see previous post)
when I was going to the main menu, the game view controller was still instantiated. It wasn't released or anything else. SO when I pushed the new game button, I was making another instance...doing that a bunch of times would obviously fill up the memory. So, obviously, what I do now is I check if the game view controller is not instantiated (if (self==nil) {}), and if it is nil (first time new game button pushed) I do the alloc and init, otherwise, if it exists, I just re-init. In either case I insert its view on top of the main menu view.
And that is all!