For freeing nexus that you allocated at a certain point, you can use the level_mark and level_free functions.
As to your second question: No, that's not the way programming normally works. When you allocate memory by creating a new model, the computer does not care if you really need that model. The commands are just executed, whether they make sense or not.