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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я работаю с разделяемой памятью прямо сейчас. Я не могу понять alignof и alignas. cppreference неясно: alignof возвращает "выравнивание", но что такое "выравнивание"? количество байтов для добавления для последующего выравнивания следующего блока...
13 июн. '13 в 15: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 в 20:10
3

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

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

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

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