Описание тега memory-layout

2 ответа

Структура памяти программ в linux

Я немного запутался в том, как программа выглядит в памяти, мои профессора сказали мне, что стек и куча растут навстречу друг другу, так как стек находится по более низкому адресу памяти. Первое, что беспокоило меня с этим изображением, это то, что …
14 июл '13 в 00:37
2 ответа

Есть ли прагма для того, чтобы не заботиться о макете структуры / класса? Если нет, то почему?

Есть разные pragmas для управления макетом структуры / класса, например pragma pack, Но, насколько я знаю, нет pragma за то, что он сказал: "Мне нет дела до макета. Он внутренний, код не полагается на него. Переупорядочивайте его для лучшей производ…
16 окт '14 в 15:36
4 ответа

Что происходит с виртуальным базовым классом при наследовании в многоуровневом наследовании?

Играя с наследованием, мне довелось попробовать это: class A { int i; }; class B : virtual public A { int j; }; class C : public B { int k; }; int main() { std::cout<<sizeof(C)/sizeof(int); return 0; } Который дал мне выход 6 В то время как сл…
3 ответа

C++ Не виртуальная переменная члена класса макет памяти?

У меня есть не виртуальный шаблон класса A как показано ниже, и я делаю следующее #include <iostream> // my class template template<typename T> class A { public: T x; T y; T z; // bunch of other non-virtual member functions including con…
17 июн '17 в 14:55
1 ответ

Инициализировать структуру из данных в Swift 3

У меня есть Struct названный MyContiguousStruct чья память не имеет отступов. struct MyContiguousStruct { let ivar1: UInt8 let ivar2: UInt8 let ivar3: UInt16 let ivar4: UInt16 } Мой инициализатор работает (отлично) так: init?(data: Data) { guard dat…
18 апр '17 в 16:44
1 ответ

Можем ли мы реализовать список стилей C++ в Java?

В Java arrayList "хранит" ссылки на объекты, а не на фактические данные объекта. Мне было интересно, можем ли мы реализовать arrayList в Java, который может содержать данные объекта непосредственно вместо ссылок. Можно ли использовать Java Unsafe Cl…
12 авг '13 в 22:14
1 ответ

Что происходит в этом фрагменте относительно представления n в pc[i]

Я понятия не имею, что происходит. Вместо uint8_t я бы предположил, что нам нужно привести к указателю типа 1 байт, например char или bool, чтобы добиться такого поведения. Я полагаю, что обратный характер связан с порядком байтов? РЕДАКТИРОВАТЬ: Я …
17 июл '18 в 18:32
2 ответа

Получение "parent" `std::tuple` из указателей на"children"

struct Apple { }; struct Banana { }; struct Peach { }; using FruitTuple = std::tuple<Apple, Banana, Peach>; template<typename TTuple, typename TItem> TTuple& getParentTuple(TItem* mItemPtr) { // <static assert that the tuple item …
29 мар '15 в 15:03
0 ответов

Определение структур в каркасе "Яблоки"

Я играю с Metal для iOS, делая небольшую игру. В одном из моих шейдеров ядра (в моих файлах.metal). Я определяю структуру для хранения некоторых метаданных для части игрового процесса. Структура выглядит так: struct ColorSetup { float4 color; float4…
15 фев '16 в 17:54
1 ответ

Класс, использующий виртуальное наследование, кажется, позволяет конструктору базового класса перезаписывать члены другого базового класса.

Я недостаточно знаком с макетом памяти объектов, которые содержат виртуальные базы, чтобы понять, почему следующее выглядит неправильно скомпилированным как clang, так и gcc. Это академическое упражнение, поэтому, пожалуйста, извините за легкомыслие…
09 янв '19 в 03:35
2 ответа

Расположение памяти в Javascript - ориентированный на данные против объектно-ориентированного дизайна

Исходя из опыта C/C++, расположение объектов в памяти с точки зрения уменьшения потерь в кеше - это то, что особенно важно при работе на консолях. Проектирование, ориентированное на данные, часто предпочитается объектно-ориентированному проектирован…
1 ответ

Как рассчитать время выполнения и максимальное использование памяти данных в следующей программе c

Вот мой код Время выполнения памяти будет зависеть от ОС, но я не хочу, чтобы этот уровень. Просто хочу решить этот тип вопроса с базового уровня. include <studio.h> int calculate(int n); int number = 8; int main(){ int add; add = calculate(nu…
02 май '17 в 05:54
2 ответа

Выравнивание структуры C/C++

В c/ C++ (я предполагаю, что они одинаковы в этом отношении), если у меня есть следующее: struct S { T a; . . . } s; Гарантируется ли следующее? (void*)&s == (void*)&s.a; Или, другими словами, есть ли какая-либо гарантия, что перед первым уч…
24 июл '13 в 21:27
2 ответа

Выбор vptr в случае множественного наследования

Это похоже на многие предыдущие вопросы, но спрашивает что-то, на что я не смог найти ответ. #include <iostream> using namespace std; class Base1 { public: int b1_data; virtual void b1_fn() {cout << "I am b1\n";} }; class Base2 { public:…
1 ответ

Выравнивание байтов объекта в xcode

Есть ли способ получить выравнивание байтов во время компиляции экземпляра класса в XCode? В Visual Studio есть флаг (/d1reportSingleClassLayoutXXX, где XXX - имя класса), который будет выгружать макет класса в окно вывода. Есть ли подобный флаг / ф…
14 мар '12 в 16:30
0 ответов

Как VBA/VB6 размещает память в классе, который реализует несколько интерфейсов?

Я изучаю расположение полей и указателей для экземпляра класса в VBA. Я предполагаю, что макет похож, если не то же самое для VB6. Я смог использовать различные фрагменты из этого потока VBForums, чтобы помочь найти открытых и закрытых членов класса…
20 июл '18 в 09:59
3 ответа

C++: расположение в памяти классов с использованием наследования

Я знаю, как данные будут упакованы не указано в стандарте. Я просто пытался получить представление о расположении памяти классов (особенно как dynamic_cast<void*> гарантирует возврат указателя на начало самого производного класса). Я не мог пр…
2 ответа

Какова цель макетов совместимых типов?

Стандарт определяет, когда два типа совместимы с макетом. Но я нигде в стандарте не вижу, каковы будут последствия, когда два типа совместимы с макетом. Кажется, что совместимость с макетом - это определение, которое нигде не используется. Какова це…
29 окт '18 в 08:40
0 ответов

Выбор структуры памяти N-мерного массива

Я начал писать библиотеку для n-мерных векторов. Есть несколько конструктивных особенностей, которые я хотел бы поддержать в этой библиотеке: Расположение памяти непрерывно. Это связано с тем, что совместное использование памяти, отправка по сети и …
15 янв '14 в 08:52
1 ответ

Понимание макетов памяти переводчика (JVM/JS)

Я пытаюсь понять структуру памяти процесса на уровне операционной системы, и мы привыкли к этой диаграмме. Забудьте многопоточную часть диаграммы, но теперь для общих целей мы предполагаем, что блок "кода", показанный на диаграмме выше, является дво…