уничтожение статической локальной переменной в плагине

Я видел несколько вопросов о статической локальной переменной и статическом члене класса. Из одного комментария в этом и, вероятно, самый ясный ссылка на сайт

C ++ Primer говорит:

Каждая локальная статическая переменная инициализируется перед
первый раз выполнение проходит через определение объекта. Местный
статика не разрушается при завершении функции; они уничтожены
когда программа заканчивается.

Но я обнаружил, что приведенное выше описание «когда программа заканчивается» неоднозначно. Означает ли это выход из приложения? или если это плагин, значит ли это, что плагин выгружен?

Я заметил, что локальная статическая переменная не уничтожается в моем плагине, выгружается, когда он компилируется в режиме релиза на Linux раньше. Но когда я изменил его на члена класса, он удаляется должным образом, когда плагин выгружается. Статическая переменная class / local используется только в плагине.

Кто-нибудь может дать какое-нибудь объяснение?

1

Решение

Статическая область хранения управляется реализацией, а не плагином.

Помните, что если бы это была обычная функция, а не плагин, функция могла бы вызываться несколько раз, и вы ожидали бы найти данные в статическом объекте так же, как в предыдущий раз, когда она была вызвана.

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

0

Другие решения


По вопросам рекламы [email protected]