jov*_*eha 6 c gcc destructor mingw
我注意到在linux下编译并使用mingw进行交叉编译时,gcc的析构函数的行为有所不同.
在linux上,析构函数不会被调用,除非程序自己正常终止(返回main).我想如果考虑到信号处理程序,那是有道理的.
但是,在Win32上,如果程序以CTRL-C结束,则会调用析构函数,但在从任务管理器中终止时则不会.
为什么是这样?无论进程如何终止,你会建议让析构函数被调用 - 特别是在Win32上?
示例代码:
#include <stdio.h>
int main(int argc, char **argv) {
printf("main\n");
while(1) {}
return 0;
}
__attribute__((destructor)) static void mydestructor(void) {
printf("destructor\n");
}
Run Code Online (Sandbox Code Playgroud)