LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

После компиляции вся информация о типах и наследовании в объектном файле исчезает. А вот если объект создается динамически во время выполнения откуда система знает про то какие дестукторы и в какой последовательности надо вызывать?

На самом деле «знать» не надо. Код (как «клиентский» так и «провайдерский») уже написан и скомпилирован и сделает то, что надо.

Т.е. если класс декларирует деструктор (в заголовочном файле), то код, владеющий обьектом тапкого класса сгенерирует вызов деструктора. Если деструктор виртуальный, то достанет его адрес из vtable и вызовет.

Но конечно, если у тебя есть бинарка (напр. разделяемая библиотека) без публичных заголовков, без отладочных символов и прочей вспомагательной информации, то тут уже вопрос реверс инжиниринга.

Исходная версия KennyMinigun, :

После компиляции вся информация о типах и наследовании в объектном файле исчезает. А вот если объект создается динамически во время выполнения откуда система знает про то какие дестукторы и в какой последовательности надо вызывать?

На самом деле «знать» не надо. Код (как «клиентский» так и «провайдерский») уже написан и скомпилирован и сделает то, что надо.

Т.е. если обьект декларирует деструктор (в заголовочном файле), то код, владеющий таким обьектом сгенерирует вызов деструктора. Если деструктор виртуальный, то достанет его адрес из vtable и вызовет.

Но конечно, если у тебя есть бинарка (напр. разделяемая библиотека) без публичных заголовков, без отладочных символов и прочей вспомагательной информации, то тут уже вопрос реверс инжиниринга.