Какое поведение atexit () в DLL / так загружается во время выполнения? - PullRequest
5 голосов
/ 02 января 2012

Если я загружаю файл dll / so во время выполнения (то есть, используя LoadLibrary() или dlopen()), каково поведение функции C ++ atexit()? Будет ли он вызван, если я выгружу библиотеку до выхода из приложения? И можно ли ожидать одинакового поведения на всех платформах? (В частности, Windows и Unix-подобные системы)

1 Ответ

4 голосов
/ 02 января 2012

Под окнами: когда вы вызываете FreeLibrary, для каждой библиотеки будет выполняться atexit цепочка функций. Важно отметить, что библиотеки DLL выгружаются в неопределенном порядке, поэтому не добавляйте обработчики atexit, которые зависят от глобальных переменных некоторых библиотек DLL.

Вот еще немного информации: http://msdn.microsoft.com/en-us/library/988ye33t.aspx

...