Как заставить глобальный объект общей библиотеки пережить функцию выхода()?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как заставить глобальный объект общей библиотеки пережить функцию выхода()?

Сообщение Anonymous »

У меня возникла проблема с уничтожением глобального объекта общей библиотеки до его использования. Я не знаю всех подробностей и не могу контролировать приложение, использующее библиотеку, но мое предположение о том, что происходит, следующее:
  • main( ) функция возвращает
  • вызывается функция exit()
  • exit() уничтожает глобальный объект
  • exit () вызывает atexit-функции, то есть функции, зарегистрированные с помощью функции atexit().
  • atexit-функции вызывают функции библиотеки, которые используют уже уничтоженный глобальный объект.
Мне нужно, чтобы объект выдержал это.
Поможет ли динамическое создание решить проблему? Любое из этого:

Код: Выделить всё

Object *pObj = new Object;
Object &rObj = *(new Object);
Насколько я понимаю, динамически созданный объект выживет. А как насчет переменных, указывающих на объект? pObj и rObj сами являются глобальными переменными. Разве они не будут уничтожены до того, как сработает функция atexit, так же, как уничтожается объект со статической длительностью хранения?

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»