any exception in any thread caught by CRT defined terminate() causes whole program to abort.

abort() function is called.

abort() causes static destructors to be called, but no memory is freed when allocated on the heap. However it usually doesnt matter since OS has track of process heap, so if you "forgot" to cleanup after you , operating system will do it for you (gladly).