There's some confusion here. The type has nothing to do with how the thing is allocated. The location of the declaration is all that matters. Variables inside functions are in automatic storage and automatically cleaned up when the containing block is left. Variables outside functions (and outside classes) are in static storage and are cleaned up when the program ends. Stuff allocated with new is in dynamic storage and must be explicitly deallocated.
I know that all basicaly allocated memory (int,char,ect)