Описание тега object-layout
2
ответа
Значение указателя на член данных в C++
Встречайте очень странную проблему, кто-нибудь знает, в чем причина этого? код протестирован под Visual Studio 2012. #include <iostream> struct A { int a; }; struct B { int b; }; struct C : public A, public B { int c; }; int main() { int C::*p…
29 авг '13 в 11:57
3
ответа
Влияет ли дополнительное наследование на структуру объекта или его создание?
В коде есть несколько специальных классов и есть несколько обычных классов. Я хочу их дифференцировать, потому что специальным классам нужно было по-разному относиться. Все эти специальные классы являются базовыми (не дочерними по отношению к другим…
09 окт '11 в 08:07
2
ответа
Почему в объекте Java существует внутренняя фрагментация, даже если каждое поле выровнено по 4 байта?
Вступление: Я использовал инструмент JOL (Java Object Layout) для анализа внутренней и внешней фрагментации объектов Java для исследовательских целей. При этом я наткнулся на следующее: x@pc:~/Util$ java -jar jol-cli-0.9-full.jar internals sun.refle…
29 ноя '17 в 08:41
6
ответов
Структура памяти объекта C++
Я пытаюсь понять расположение объектов для C++ в множественном наследовании. Для этого у меня есть два суперкласса A, B и один подкласс C. То, что я ожидал увидеть при попытке выгрузить его, было: vfptr | поля А | vfptr | поля B | поля С. Я получаю …
09 фев '14 в 19:58
3
ответа
C против C++ выравнивание структуры
В недавнем интервью меня спросили о выравнивании структурных полей C++, и я теоретизировал, что C и C++ придерживаются одной и той же стратегии в упаковке структур. Но это было неверное предположение. Интервьюер сказал, что в целом C и C++ упаковыва…
20 ноя '15 в 20:31
4
ответа
Разница в разметке памяти между вложенными классами и множественным наследованием в C++?
Я пытаюсь понять, как COM определяет расположение своих объектов, чтобы клиент, который хочет использовать объект COM, знал, как это сделать. Я читал, что COM-объект, который реализует несколько интерфейсов, может делать это по-разному, в том числе …
05 янв '11 в 20:37
4
ответа
Виртуальное наследование в C++
Я нашел это на веб-сайте, читая о виртуальном наследовании в C++ Когда используется множественное наследование, иногда необходимо использовать виртуальное наследование. Хорошим примером для этого является стандартная иерархия классов iostream: //Not…
03 мар '11 в 11:02
3
ответа
C++ Можно ли оптимизировать данные константного класса вне класса компилятором?
Я знаю, что постоянные переменные вне классов могут быть оптимизированы напрямую в вызовы функций компилятором, но допустимо ли для компилятора делать то же самое для переменных постоянных классов? Если есть класс, объявленный так: class A { public:…
31 июл '17 в 14:05
4
ответа
Почему размер класса увеличивается, когда int64_t меняется на int32_t
В моем первом примере у меня есть два битовых поля, используя int64_t, Когда я компилирую и получаю размер класса, я получаю 8. class Test { int64_t first : 40; int64_t second : 24; }; int main() { std::cout << sizeof(Test); // 8 } Но когда я …
12 июл '16 в 17:54
5
ответов
Составляют ли члены данных диапазон?
Могу ли я рассматривать последовательные элементы данных одного типа как диапазон? Например: struct X { int a, b, c, d, e; }; X x = {42, 13, 97, 11, 31}; std::sort(&x.a, &x.a + 5); // kosher?
05 сен '13 в 12:11
4
ответа
Указатель на объект == указатель на первый член?
Почему условие if в следующем коде возвращает true? struct A { int firstMember; } a1; if (&a1 == static_cast<void*>(&a1.firstMember)) std::cout << "equal"; Я немного запутался, когда читал FAQ Страуструпа о пустых классах, а имен…
29 ноя '10 в 21:03
1
ответ
Где в стандарте C++ задокументирована структура памяти объектов?
Это большой вопрос, поэтому я прошу справку, а не ответ размером с буклет. Я прохожу экскурсию по C++ по Страуструпу, и похоже, что расположение объектов основано на том, что память является фундаментом для проектирования многих функций C++, наприме…
11 июн '18 в 17:30
2
ответа
Кастинг и макет объекта
Я пытался понять расположение объекта, приведя следующие два несвязанных класса: class A { public: A(int x):_a(x){} private: int _a; }; class B { public: void Show() { cout << "&_x = " << &_x << "," << " _x = " <&l…
06 авг '13 в 11:26
1
ответ
Как дополнительный синтаксис / спецификатор функций-членов влияет на расположение памяти в классах?
Я думаю, что у меня есть четкое понимание членов данных класса и их представления в памяти: Члены класса определяют расположение объектов: члены данных хранятся один за другим в памяти. Когда используется наследование, члены данных производного клас…
26 сен '15 в 11:15
1
ответ
Макет объекта
Я хочу понять расположение объекта. Так что я выполнил с различными порядками переменных-членов. Все получилось, как и ожидалось, ожидайте следующей последовательности. #include <iostream> using namespace std; class Test1 { public: int m_a; ch…
25 авг '12 в 10:12
3
ответа
Обязательно ли макет объекта C++ обязательно статически определен?
Более конкретно, предполагая, A является доступным базовым классом BПриводит ли следующий код к неопределенному поведению, и гарантировано ли утверждение не срабатывать в соответствии со стандартом? void test(B b1, B b2) { A* a2 = &b2; auto offs…
25 авг '18 в 14:03
1
ответ
Будет ли элемент данных класса standard_layout иметь фиксированное смещение от адреса объекта?
Если класс is_standard_layout, достаточно ли этого, чтобы гарантировать, что данный нестатический член данных всегда будет иметь одинаковое смещение от адреса объекта (т. Е. Одинаково для разных экземпляров этого класса в рамках всего процесса)?
06 ноя '15 в 09:10
1
ответ
Как интерпретировать слово метки экземпляра?
Я пытаюсь понять вывод макета объекта Java на 64-битной виртуальной машине HotSpot (v8). Я не понимаю, как используются первые три бита слова метки , которые в соответствии с комментарием в связанном файле класса должны указывать, установлена ли н…
09 дек '14 в 21:55
1
ответ
Представление объектов кучи для языка ОО
В рамках магистерской работы я пишу компилятор для объектно-ориентированного языка, который был разработан в моем домашнем университете. В настоящее время компилятор выводит ассемблер, который работает на виртуальной машине. Виртуальная машина обраб…
08 апр '11 в 23:23
1
ответ
При каких условиях безопасно использовать std::memcpy для копирования между объектами?
При каких условиях безопасно использовать std::memcpy копировать с одного объекта на другой? Например, какие условия должны T, src а также dest удовлетворить следующие требования для безопасности: template <typename T> void copy_bytewise(T&…
22 янв '20 в 06:06