Вопросы по теме 'vtable'

Получение списка всех существующих vtables
В моем приложении есть довольно много указателей на пустоту (это из-за исторических причин, приложение изначально было написано на чистом C). В одном из моих модулей я знаю, что указатели void указывают на экземпляры классов, которые могут...
448 просмотров
schedule 02.06.2024

Размещение Vtable полностью чисто виртуального класса
Согласно моему (ограниченному) знанию спецификации С++, виртуальная таблица класса с виртуальными членами помещается в определение первого нечистого не встроенного виртуального метода. Как компиляторы обрабатывают классы, которые наследуются от...
1854 просмотров
schedule 13.04.2024

Почему виртуальная таблица требуется только в случае виртуальных функций?
Из http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ , такой код, как class Base { public: virtual void function1() {}; virtual void function2() {}; }; class D1: public Base { public: virtual void function1() {}; }; class...
481 просмотров
schedule 18.12.2023

Виртуальные таблицы и макет памяти при множественном виртуальном наследовании
Рассмотрим следующую иерархию: struct A { int a; A() { f(0); } A(int i) { f(i); } virtual void f(int i) { cout << i; } }; struct B1 : virtual A { int b1; B1(int i) : A(i) { f(i); } virtual void f(int i) { cout <<...
7165 просмотров

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

Как отобразить vtable по имени с помощью gdb
При отладке, когда у вас есть аварийный дамп, указатели vtable являются хорошими индикаторами объекта в памяти. Что я хотел бы сделать в gdb, так это иметь возможность запрашивать vtable, выполнив что-то вроде info address 'vtable for Bar'...
6593 просмотров
schedule 31.05.2024

Можно ли реализовать обход vtable для виртуальных функций?
Вместо использования виртуальных функций, в которых выполняется поиск указателя vtable в объекте, который затем приводит вас к vtable, содержащему указатель на функцию, нельзя ли просто содержать элемент данных в объекте, который указывает прямо к...
596 просмотров
schedule 23.10.2023

Доступ к частной функции С++ через указатели
Скажем, у меня есть следующее: class A { private: int a; virtual int f() {return a;} public: A(int t) {a = t;} }; Теперь, как я могу получить доступ к int A::f() , если мне дан указатель на объект A? Я знаю, как получить!...
2423 просмотров
schedule 12.11.2023

Как компилятор узнает, какая запись в vtable соответствует виртуальной функции?
Допустим, у нас есть несколько виртуальных функций в родительском и производном классах. Для этих виртуальных функций будет создана таблица vtable в таблице vtable как для родительского производного класса. Как компилятор узнает, какая запись в...
1651 просмотров

Где С# хранит виртуальную таблицу структуры при десортировке с использованием [StructLayout(LayoutKind.Sequential)]
У меня есть устройство, которое передает двоичные данные. Для интерпретации данных я определил struct , соответствующий формату данных. struct имеет атрибут StuctLayoutAttribute с LayoutKind.Sequential . Это работает, как и ожидалось,...
447 просмотров
schedule 12.03.2024

Почему fdump-class-hierarchy дает два указателя int vtable для виртуальных функций
для следующего класса, class A { public: char VarA; int VarB; virtual ~A(){} }; g++ fdump-class-hierarchy дает мне Vtable, Vtable for A A::_ZTV1A: 4u entries 0 (int (*)(...))0 8 (int (*)(...))(& _ZTI1A) 16...
202 просмотров

как искать виртуальную таблицу С++?
простой пример кода, как показано ниже: #include <iostream> class Base { public: virtual void func0() { std::cout << "Base::func0" << std::endl; }; virtual void func1() { std::cout <<...
60 просмотров
schedule 20.03.2024