I think I understand what you're confused about. Global variables are always stored in memory while a program is executing. If you have a ton of variables, your program will be bloated and huge in memory. Storing something on the heap/free store lets you destroy that object, which means it's no longer in memory, which means your program will take up less RAM at any given time. Local variables are destroyed when they're out of scope, but in main() they are never out of scope so you have to watch that. Using new/delete ultimately reduces the size of your program in memory, which is important especially for big programs. Say you have a program that loads a document or some other file from disk and stores that in memory, or a program that creates a large chunk of data in memory. That big piece of memory would fill the shit out of your systems memory and maybe crash your program if you weren't able to "delete" the object, so using the heap/free store is good for things that take up sizeable space in memory, such as servers, photo/video editors, video games, etc. So in the end, it basically is a performance boost like you said, but a very useful and important one. With any small program, I wouldn't really worry about it though.