I have a number of data structures (trees, queues, lists), created using dynamic allocation routines (malloc, calloc). Under some critical conditions, the program should terminate. Traversing all objects to free their memory takes long time.
Is it safe to avoid traversing all data structures just before program stops? If yes, does it apply to all operating systems and environments (e.g. multiple threads)?
All the memory dynamically allocated by a process is released back to the OS on process termination, doesn’t matter intentionally or via a crash. Same happens with files and sockets – ref counts inside the kernel get decremented and resources get released if there are no more references.
An exception to the above might be the shared memory.