Вопросы с тегом 'memory-alignment'

Выравнивание памяти означает, что объекты и переменные находятся в определенных смещениях в системной памяти.
16 отв.

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

Каковы некоторые действительно веские причины, чтобы опрокинуть std::allocator в пользу пользовательского решения? Вы сталкиваетесь с ситуациями, когда это абсолютно необходимо для правильности, производительности, масштабируемости и т.д.? Какие-ниб...
05 мая '09 в 22:36
8 отв.

Назначение выравнивания памяти

По общему признанию, я не понимаю. Скажем, у вас есть память с словом памяти длиной 1 байт. Почему вы не можете получить доступ к переменной длиной 4 байта в одном доступе к памяти на неуравновешенном адресе (т.е. Не делимом на 4), как это происходит...
19 дек. '08 в 18:18
4 отв.

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

В Noda Time v2, мы переходим к наносекундному разрешению. Это означает, что мы больше не можем использовать 8-байтовое целое, чтобы представлять весь диапазон времени, в котором мы заинтересованы. Это побудило меня исследовать использование памяти (м...
14 июля '14 в 20:30
11 отв.

Почему компиляторы C не могут изменять элементы структуры для исключения выравнивания?

Возможный дубликат: Почему GCC не оптимизирует структуры? Почему С++ не упрощает структуру? Рассмотрим следующий пример на 32-битной машине x86: Из-за ограничений выравнивания следующая структура struct s1 { char a; int b; char c...
28 февр. '12 в 20:03
4 отв.

Каков рекомендуемый способ выравнивания памяти на С++ 11

Я работаю над единственной реализацией одного кольцевого буфера для одного производителя. У меня есть два требования: 1) Выровняйте один экземпляр буфера, выделенного кучей, в строку кэша. 2) Совместите поле в кольцевом буфере с линией кэша (чтобы ...
27 дек. '13 в 0:21
10 отв.

Выравнивание памяти в C-структурах

Я работаю над 32-разрядной машиной, поэтому я полагаю, что выравнивание памяти должно быть 4 байта. Скажем, у меня есть структура: typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; } myStruct; реальный размер со...
25 марта '11 в 20:14
6 отв.

как malloc понимает выравнивание?

после выдержки из здесь pw = (widget *)malloc(sizeof(widget)); выделяет необработанное хранилище. Действительно, вызов malloc выделяет хранилище достаточно большой и , подходящим для размещения объекта типа виджет также см. быстрый pImpl от тра...
06 янв. '12 в 5:05
6 отв.

Выравнивание строки кэша и знание размера строки кэша

Чтобы предотвратить ложное совместное использование, я хочу, чтобы каждый элемент массива был привязан к строке кэша. Поэтому сначала мне нужно знать размер строки кэша, поэтому я назначаю каждому элементу столько байтов. Во-вторых, я хочу, чтобы нач...
02 сент. '11 в 12:43
4 отв.

Всегда ли так, что sizeof (T) >= alignof (T) для всех типов объектов T?

Для любого типа объекта T всегда всегда имеет место sizeof(T) не менее alignof(T)? Интуитивно это кажется так, поскольку даже когда вы настраиваете выравнивание объектов типа: struct small { char c; }; выше того, что обычно было бы, их "размер...
28 сент. '17 в 0:23
3 отв.

Создание std::vector выделения выровненной памяти

Можно ли сделать std::vector пользовательских структур распределенной выровненной памяти для дальнейшей обработки с помощью инструкций SIMD? Если это возможно с Allocator, есть ли у кого-нибудь такой распределитель, который он мог бы поделиться?
17 окт. '12 в 23:09
6 отв.

Всегда ли члены класса/структуры создаются в памяти в том порядке, в котором они были объявлены?

Это вопрос, который был вызван Rob Walker для ответа здесь. Предположим, что я объявляю класс/структуру следующим образом: struct { char A; int B; char C; int D; }; Можно ли предположить, что эти члены будут объявлены точно в это...
11 нояб. '08 в 17:40
3 отв.

Выравнивание памяти: как использовать выравнивание/выравнивание?

Я работаю с разделяемой памятью прямо сейчас. Я не могу понять alignof и alignas. cppreference неясно: alignof возвращает "выравнивание", но что такое "выравнивание"? количество байтов для добавления для последующего выравнивания следующего блока...
13 июня '13 в 18:44
4 отв.

При расширении проложенной структуры, почему дополнительные поля не могут быть помещены в дополнение к хвосту?

Рассмотрим структуры: struct S1 { int a; char b; }; struct S2 { struct S1 s; /* struct needed to make this compile as C without typedef */ char c; }; // For the C++ fans struct S3 : S1 { char c; }; Размер S1 равен 8, чт...
08 июня '14 в 23:10
3 отв.

Запросить выравнивание определенной переменной

С++ 11 представил спецификатор alignas, чтобы указать выравнивание переменной, а alignof оператора, чтобы запросить выравнивание по умолчанию для типа по умолчанию. Тем не менее, я не вижу никакого способа получить выравнивание определенной переменно...
25 марта '16 в 12:05
1 отв.

Вопросы о распределителе стеков Hinnant

Я использую Howard Hinnant распределитель стека, и он работает как шарм, но некоторые детали реализации немного неясны для меня. Почему используются глобальные операторы new и delete? Функции-члены allocate() и deallocate() используют ::operator n...
25 июля '12 в 13:58