Question: Is there any mechanism like destructors in C? Or is there another way to achieve it?

My requirement is that when a program terminates all memory allocated at runtime should be freed. I keep a list of memory that is allocated using `malloc`.

Answer: 
Another alternative is to write a memory manager.

The idea is that the memory manager allocates large blocks of memory and divides it into smaller pieces for the rest of the program to use. When the program terminates, the memory manager can just delete the large blocks.

That's the basic idea, although the memory manager may need to be more complex depending on the memory usage profile of the program.

There's a basic memory manager in the Doom source code you could examine: <http://doom.wikia.com/wiki/Zone_memory>
A very simple solution is not to use `malloc`. This is an option adopted by some safety critical systems and they just use the stack.

Otherwise just terminate the program in a control fashion and tidy up during termination.