#include "NMWException.h" dtor_chain *__global_destructor_chain; extern void *__register_global_object(void *object, dtor_func *destructor, dtor_chain *regmem) { regmem->next = __global_destructor_chain; regmem->destructor = destructor; regmem->object = object; __global_destructor_chain = regmem; return object; } extern void __destroy_global_chain() { dtor_chain *iter = __global_destructor_chain; while (__global_destructor_chain != 0) { iter = __global_destructor_chain; __global_destructor_chain = __global_destructor_chain->next; iter->destructor(iter->object, -1); } } __declspec(section ".dtors") static void* const __destroy_global_chain_reference = __destroy_global_chain;