C ++ Отключить деструкторы для статических переменныхC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 C ++ Отключить деструкторы для статических переменных

Сообщение Anonymous »

У меня есть класс общего назначения, который используется в разных контекстах - иногда как
static переменная, а иногда в качестве обычной переменной в стеке /кучах. Исполняемый файл используется в встроенной цели, где
Flash является ограниченным ресурсом и который никогда не выходит, и для этого я бы хотел, чтобы
этот код «выхода» был отключен. < /Code> - это класс, в котором необходим деструктор
для обычных обстоятельств, но не требуется для статического
variables.

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

struct Abstract {
virtual ~Abstract() {}
};

struct A : public Abstract {
int i = 0;
};

static A a;
static A b;
Далее приведен сгенерированный код ассемблера (скомпилируется с -os -Std = c ++ 11
-fno -Exceptions -fno-rtti ), сгенерированное: http://./fwcmlu>
Abstract::~Abstract():
ret
A::~A():
ret
A::~A():
jmp operator delete(void*)
Abstract::~Abstract():
jmp operator delete(void*)
pushq %rax
movl $__dso_handle, %edx
movl a, %esi
movl A::~A(), %edi
call __cxa_atexit
popq %rcx
movl $__dso_handle, %edx
movl b, %esi
movl A::~A(), %edi
jmp __cxa_atexit
vtable for Abstract:
vtable for A:
b:
.quad vtable for A+16
.long 0
.zero 4
a:
.quad vtable for A+16
.long 0
.zero 4
< /code>

Как видно в коде ассемблера выше достаточного количества инструкций, чтобы
Do Coade. Он не должен портативный - пока он работает в недавних версиях GCC. Атрибуты, сценарии линкеров, изменение объектных файлов и другие трюки в основном приветствуются.

Подробнее здесь: https://stackoverflow.com/questions/276 ... -variables
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C ++ Отключить деструкторы для статических переменных
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Какова длина имен переменных переменных min и max от одного миллиона имен переменных в C ++? [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Когда использовать виртуальные деструкторы?
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Почему виртуальные деструкторы не применяются для базового класса
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Деструкторы в C ++, запутанные [дублировать]
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

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