Question about different ways to declare objects and their effects on RAM usuage

PaulS:
Here you are creating a different instance called c1, and calling that instance's doSomething() method. This is not the same instance that was init()ed in setup().

Thanks PaulS. I actually don't mind if the new instance is different from the first instance (as long as they're not duplicated in memory that is). Let's say one of the library's is for a device like an accelerometer (which it is) and the .init() call configures the data registers in the accelerometer only. I don't care if the instance of the object is destroyed at the end of Setup() as it's only function is to configure the accelerometer. Now later on I create another instance to access features of the accelerometer (grab X,Y,Z crunch some numbers, etc..) and once again don't care that it gets destroyed when it goes out of scope.

I guess what I'm ultimately asking is (and in retrospect should have phrased it this way):

Is dynamically creating instances of objects similar to using local variables in functions? I know in a function when you declare a local variable, it is freed from memory once you return from the function call. Does the same apply to an instance of an object when it goes out of scope? Are there any pro's or con's (related to RAM usage) with the three examples above?