Поведение деструктора GCC

Я заметил различие в поведении для деструктора gcc при компиляции в соответствии с Linux и кросс-компиляции с mingw.

На 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");
}
6
задан joveha 25 May 2010 в 17:55
поделиться

1 ответ

Удаление из диспетчера процессов в Window аналогично kill -9 в Linux - программе не дается возможность выполнить очистку.

5
ответ дан 17 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: