As to my understanding before, that, so long as you dynamically requested a memory location from the operating system you have to bring it back using a destructor. I had an assumption since I used C++ that the memory you requested from the operating system is automatically released back to the OS. The book i've read stated that the destructor is not automatically releasing the memory back to the operating system, it's performing termination housekeeping so that the memory can be reused by the objects. I just wanted to be sure to what I understand, let's say you dynamically requested a memory from the operating system and you no longer need it, of course you will have to code a destructor for that. Since it's the destructor's job to free the memory (but not bringing it back to the operating system just yet) the destructor still holds the memory location or size? if so, what if it asks for the another memory location but the memory that the destructor holds ( termination housekeeping ) is not sufficient for that request, it will request to the operating system again? How is it going to release the memory to the OS, when the program terminates?