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

Где я могу найти документацию по выравниванию памяти C++ на разных платформах/компиляторах?
Я ищу хороший (всеобъемлющий) документ о выравнивании памяти в C++, типичных подходах, различиях между компиляторами и распространенных ловушках. Просто чтобы проверить правильность моего понимания темы и узнать что-то новое. Этот вопрос...
427 просмотров
schedule 17.02.2024

Найти дыры в структурах C из-за выравнивания
Есть ли способ в gcc или clang (или любом другом компиляторе) выплевывать информацию о том, есть ли в структуре дыры (выравнивание памяти) в ней? Спасибо. PS: Если есть другой способ сделать это, пожалуйста, сообщите мне.
4030 просмотров
schedule 18.04.2024

С ++ выравнивание структуры с выровненными членами
Всегда ли struct выравнивается так же, как член наибольшего выравнивания этой структуры? Если нет, то как это можно обеспечить автоматически, возможно, с помощью расширения, специфичного для gcc? (Я знаю, что есть __attribute((aligned(...)))__ ,...
1313 просмотров
schedule 27.05.2024

что означает выровнять начало раздела?
Что означает выровнять начало раздела? Например: align 4 a: dw 0 Как это экономит доступ к памяти?
56469 просмотров
schedule 24.03.2024

Выравнивание памяти класса C++
Недавно я видел, как один из моих коллег делал что-то подобное: #include <iostream> class myClass { public: float X, Y; myClass(int x, int y) : X(x), Y(y){} }; int main() { char buffer[1024] = { 0 }; myClass example(12,...
1270 просмотров
schedule 11.04.2024

Невыровненный доступ вызывает ошибку на ARM Cortex-M4
У меня есть объект с адресом, не выровненным по 4 байтам. Это вызывает ошибку HardFault в процессоре, когда есть инструкция STR, сохраняющая 2 регистра. Это сгенерированный код: 00000000 <_ZN8BaseAreaC1EPcmm>: 0: b510...
12094 просмотров
schedule 28.10.2022

Свести к минимуму общую память структуры
У меня есть struct : struct st { short a; int *b; char ch; }; short — 2 байта int* — 8 байтов в x64 char — 1 байт Все вышеперечисленное вместе должно дать мне 11 байт. Но если я сделаю sizeof(st) , я получу 24 байта....
199 просмотров
schedule 10.02.2024

Бывают ли случаи, когда 32-битная переменная не может быть правильно выровнена
По следующей ссылке: http://msdn.microsoft.com/en-us/library/ms684122%28VS.85%29.aspx сказано, что «Простые операции чтения и записи в правильно выровненные 32-битные переменные являются атомарными операциями». Мне интересно, все ли 32-битные...
133 просмотров
schedule 05.02.2024

почему в C11 нет выровненного calloc
Стандарт C11 добавил функцию aligned_alloc для выделения неинициализированной выровненной памяти. Стандарт также включает функцию calloc для выделения памяти, которая инициализируется нулем, но только выравнивает ее по размеру самого большого...
2122 просмотров

ARM не генерирует невыровненное исключение
Вот мой код: char data[5] = {0x1, 0x2, 0x3, 0x4, 0x5 }; int *ptr = (int *)(data + 1); int value = *ptr; printf("address of data= %lu\n",data); printf("address of data +1 = %lu\n",data+1); Когда я компилирую с помощью gcc -Wcast-align...
758 просмотров
schedule 21.03.2024

Как в памяти размещаются вложенные структуры с разным выравниванием?
Я разработчик C#, пишу клиент для сервера, написанного на C++. Сервер передает какие-то произвольные данные по TCP/IP клиенту, и мы должны собрать их на другом конце. Сервер отправляет нам сначала описание данных, затем сами данные. Проблемная...
1054 просмотров
schedule 27.10.2022

Ошибка шины Solaris не возникает после копирования невыровненных данных в новое место
Итак, вкратце: моя программа получает буфер необработанных байтов (u_char), который представляет собой сетевой пакет. Я пытаюсь разобрать информацию в этом пакете, и делаю это, используя определенные системой структуры заголовков (ether_header, ip,...
229 просмотров
schedule 10.12.2022

Объединение по умолчанию и выравнивание структуры в C?
Каково выравнивание по умолчанию глобальных переменных, которые являются объединениями или структурами. Гарантировано ли, что они будут выровнены по словам? В частности, при использовании GCC и SDCC. В коде функция f() безопасна или она может...
544 просмотров
schedule 12.05.2024

Как правильно разрешить увеличение выравнивания указателя с помощью clang?
Рассмотрим следующие структуры: typedef struct { uint32_t foo; uint32_t bar; } first_struct_t; typedef struct { first_struct_t f; uint8_t *p; uint8_t buf[]; } second_struct_t; Однако позже в моем коде происходит следующее...
1216 просмотров
schedule 24.10.2022

Оптимизация заполнения структуры данных/выравнивания слов в golang
Подобно тому, что я узнал из C++, я считаю, что именно заполнение вызывает разницу в размере экземпляров обеих структур. type Foo struct { w byte //1 byte x byte //1 byte y uint64 //8 bytes } type Bar struct { x byte //1 byte y...
4913 просмотров
schedule 13.05.2024

Проблемы с выравниванием при присвоении результата sbrk указателю - K&R
ссылаясь на этот код от Кернигана и Ритчи (2-е издание, стр. 188), static Header* morecore(unsigned nu) { char *cp, *sbrk(int); Header* up; if (nu < NALLOC) nu = NALLOC; cp = sbrk(nu * sizeof(Header)); if (cp ==...
204 просмотров

Выравнивание данных внутри структуры в Intel Fortran
Я пытаюсь выровнять в памяти следующий тип данных: type foo real, allocatable, dimension(:) :: bar1, bar2 !dir$ attributes align:64 :: bar1 !dir$ attributes align:64 :: bar2 end type foo type(foo), allocatable, dimension(:) :: my_foo...
297 просмотров

Как правильно согласовать EXPLICIT_ACCESS с jedi-winutils для SetEntriesInAclA?
Я пытаюсь создать новый ACL из массива EXPLICIT_ACCESS_A в Free Pascal, используя SetEntriesInAclA , но продолжаю получать код ошибки 87 (недопустимый параметр) от SetEntriesInAclA со следующим кодом: uses sysutils, JwaWinNT,...
171 просмотров

Fortran - размещаемый массив выделяемого производного типа
Итак, я искал последние 3-4 дня и не нашел ответа на эту проблему. Это связано с размещаемыми массивами определенного производного типа. Все это часть решателя вычислительной гидродинамики. Однако фактическое приложение не имеет значения....
484 просмотров
schedule 26.09.2022

Портативный способ создания гетерогенного массива вершинных данных
В графическом программировании очень часто приходится работать с форматами вершин. Это описано, например, здесь . Тем не менее, я ищу способ выполнить то, что не вызывает неопределенное поведение (я в основном ищу информацию о C++, но C тоже...
61 просмотров