The OS releases all the memory allocated by the process when it terminates, so no.
OK, however, in pd-l2ork I am currently building infinite undo which will be a doubly-linked list linked to a canvas. So, if I am going to instantiate it dynamically, once the program exits are all these dynamic things taken care of? I think not. Otherwise, why would we need destructors in the first place if the os takes care of it all (other than eventually running out of memory)? Even vanilla canvas has dynamically allocated list that is destructed upon closing the patch but this is not the case with the two invisible canvases...