Вопросы по теме '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 просмотров
schedule
29.05.2024
Виртуальная функция С++ против указателя функции-члена (сравнение производительности)
Вызовы виртуальных функций могут быть медленными из-за того, что виртуальные вызовы требуют дополнительного индексированного уважения к v-таблице, что может привести к промаху кеша данных, а также к промаху кеша инструкций... Не очень хорошо для...
2852 просмотров
schedule
06.12.2023
Как отобразить 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 просмотров
schedule
18.04.2024
Где С# хранит виртуальную таблицу структуры при десортировке с использованием [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 просмотров
schedule
21.04.2024
как искать виртуальную таблицу С++?
простой пример кода, как показано ниже:
#include <iostream>
class Base
{
public:
virtual void func0() { std::cout << "Base::func0" << std::endl; };
virtual void func1() { std::cout <<...
60 просмотров
schedule
20.03.2024