Описание тега memory-alignment
Выравнивание памяти означает, что объекты и переменные находятся на определенных смещениях в системной памяти.
1
ответ
Как определяется размер вложенных структурных массивов?
NB: Это похоже, но не совсем то же самое, что Эффекты __attribute__((упакованные)) на вложенный массив структур? Я определяю тип структуры, который содержит несколько вложенных структур. Один из членов представляет собой массив упакованных структур,…
23 май '14 в 11:52
1
ответ
Маршаллинг и выравнивание параметров буфера DeviceIoControl
Я пишу службу Windows CE и API-библиотеку для нее, которая оборачивает вызовы DeviceIoControl, необходимые для связи с библиотекой. Могу ли я быть уверен, что сортировка буферов памяти, переданных в функцию DeviceIoControl, не повредит данные, выров…
21 май '14 в 15:04
1
ответ
Выравнивание структуры памяти - время компиляции и динамически выделяемая память
Я просто просматривал руководство по glibc для описания функции posix_memalign, когда столкнулся с этим утверждением: Адрес блока, возвращаемого функцией malloc или realloc в системе GNU, всегда кратен восьми (или шестнадцати в 64-битных системах). …
25 июн '12 в 17:24
1
ответ
Размер структуры (sizeof) в C++ не соответствует реальному размеру в случае массивов
Я использую динамические массивы следующей структуры: struct TestStructure { unsigned int serial; int channel; int pedestal; int noise; int test; }; Sizeof (TestStructure) возвращает 20, поэтому я предполагаю, что в структуре нет заполнения / выравн…
24 авг '16 в 08:52
3
ответа
Почему размер этой структуры 24?
У меня есть структура, из которой я хочу рассчитать ее размер: #pragma pack(push,4) struct MyStruct { uint32_t i1; /* size=4, offset=0. */ uint32_t i2; /* size =4 offset =4 */ uint16_t s1; /* size =2 offset=8 */ unsigned char c[8]; /* size=8 offset=…
12 авг '14 в 11:52
0
ответов
Каково выравнивание упакованной структуры в C?
Возьмите следующую структуру: struct s { char c; // 1 byte long l; // 8 bytes }; C добавил бы 7 байтов заполнения c а также l, делая размер структуры 16 и выравнивание структуры 8. Если я сказал компилятору упаковать структуру, как оценивается вырав…
23 дек '17 в 06:11
1
ответ
Зачем GCC включать оптимизацию в O2/O3, когда он явно говорит, что это замедлит работу программы?
Цитируется по https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html: -falign-этикетки -falign-метки = п Выровняйте все цели ветвления с границей степени двух, пропуская до n байтов, как -falign-functions. Эта опция может легко сделать код медленн…
08 июл '17 в 20:07
1
ответ
Скорость операций с выровненными данными
Насколько мне известно, ЦП работает лучше всего с датумом, который выровнен по границе, равной размеру этого датума. Например, если каждый int размер данных 4 байта, затем адрес каждого int должно быть кратно 4, чтобы сделать процессор счастливым; т…
16 сен '11 в 19:18
0
ответов
Linux на arm64: отображение устройства регистрируется в пространстве пользователя без использования pgprot_noncached
Мы работаем с процессором на базе ARM64 и пытаемся отобразить адрес устройства в пространство пользователя в функции драйвера mmap. В настоящее время мы используем pgprot_noncached а также remap_pfn_range для отображения устройств регистрируется в п…
03 июл '18 в 05:07
0
ответов
Java, метод для закрепления и выравнивания массива
Могу ли я создать целочисленный массив с определенным выравниванием и остановить его перемещение? int [] arr = stopGcAndPageAlign(new int[1024]); or int [] arr = pin(align(new int[1024],4096)); так что я могу использовать его как источник программы …
24 сен '15 в 21:31
2
ответа
Выравнивать или не выравнивать массивы символов в стеке?
У меня есть следующий код: char stats[109]; /* !LINE UNDER QUESTION! */ sprintf(stats, "OBJECTS:\n%u/256\n" \ "BLOCKS:\n%u/" GP_ConstantExpand(Map_MaxLightmaps) "\n" \ "QUADS:\n%u/" GP_ConstantExpand(Map_MaxLightmaps) "\n" \ "LIGHTMAPS:\n%u/" GP_Con…
15 июн '12 в 12:14
2
ответа
Как определить максимально необходимое выравнивание в C99
Существует ли портативный способ, основанный только на том, что обеспечивает стандарт C99, для определения максимально необходимого выравнивания, необходимого для любого типа данных. подобно maxalign_t в C++11. То, что я сейчас делаю, это вычисление…
08 июл '16 в 16:04
1
ответ
Размещение массива, новое в сочетании с _aligned_malloc, как правильно удалить?
Начали экспериментировать с размещением new а также delete наряду с выравниванием памяти, и это похоже на то, чтобы быть умным смарфом в лаборатории папаша смурфа. Допустим, у меня есть объект, например, struct obj { ... }; и я хочу разместить в выр…
24 фев '17 в 09:14
2
ответа
C++ Укажите фактический размер структуры
Я столкнулся с проблемой взаимодействия между C# и C++, когда я разделяю память между двумя "сторонами" моего приложения через структуру, определенную как в собственном, так и в управляемом коде. Структура на нативной стороне определяется так: #prag…
07 дек '15 в 13:28
4
ответа
Безопасный и эффективный способ доступа к невыровненным данным в сетевом пакете из C
Я пишу программу на C для Linux на процессоре ARM9. Программа предназначена для доступа к сетевым пакетам, которые включают последовательность помеченных данных, таких как: <fieldID><length><data><fieldID><length><da…
09 фев '09 в 18:42
8
ответов
Цель выравнивания памяти
Правда, я не понимаю. Допустим, у вас есть память со словом памяти длиной 1 байт. Почему вы не можете получить доступ к переменной длиной 4 байта в единственном доступе к памяти по невыровненному адресу (т.е. не делится на 4), как это имеет место с …
19 дек '08 в 15:18
1
ответ
std::string и выравнивание данных
Я планирую использовать std::string в качестве общего буфера данных (вместо того, чтобы свернуть мой). Мне нужно упаковать в него все виды POD, включая определяемые пользователем структуры, выделяется ли буфер памяти std::string правильно выровнен д…
15 май '15 в 10:47
4
ответа
Почему размер структуры должен быть кратным наибольшему выравниванию любого члена структуры
Я понимаю заполнение, которое происходит между членами структуры для обеспечения правильного выравнивания отдельных типов. Однако, почему структура данных должна быть кратна выравниванию наибольшего члена? Я не понимаю, что заполнение необходимо в к…
25 апр '12 в 03:47
1
ответ
Как инициализировать WaveOUT API на Win CE, работающем на ARM в C#
Я пытаюсь заставить работать WinOut API в Win CE (ARM), но с тем же кодом, который работает в Windows 7, я получаю MMSYSERR_INVALIDPARAM в строке для подготовки буфера. Win32.MMRESULT hr = Win32.waveOutPrepareHeader( hWaveOut, ref WaveOutHeaders[i],…
14 янв '13 в 15:57
0
ответов
Aligning Class Members in C++11
I'm trying to align class members to specific alignments (eg, 128) in C++11 to avoid false sharing between threads. Мой подход заключается в использовании alignas but I'm getting mixed results. In this simple program, I'm getting the results I desir…
10 окт '18 в 14:45