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

Безопасный и эффективный способ доступа к невыровненным данным в сетевом пакете из C
Пишу программу на C для Linux на процессоре ARM9. Программа предназначена для доступа к сетевым пакетам, которые содержат последовательность тегированных данных, таких как:...
1018 просмотров
schedule 10.06.2022

Выравнивание членов структуры в Visual C++ 2008
Visual C++ позволяет выбрать элементы структуры, выровненные на странице свойств проекта. Проблема в том, что эта конфигурация используется для всех структур в проекте. Есть ли способ (я думаю, специфичный для VC++) установить выравнивание...
3974 просмотров
schedule 16.04.2023

Что такое выровненное распределение памяти?
Я также хочу знать, делает ли это glibc malloc ().
18086 просмотров
schedule 16.04.2023

проблемы выравнивания памяти с объединением
Есть ли гарантия, что память для этого объекта будет правильно выровнена, если мы создадим объект этого типа в стеке? union my_union { int value; char bytes[4]; }; Если мы создадим char bytes[4] в стеке, а затем попытаемся привести его к...
3530 просмотров
schedule 18.03.2023

Ссылка на статический объект — ловушка выравнивания срабатывает в процессе ARM
У меня есть класс: class A { public: static A& instance(); ... void setValue(int val){ _value = val; } private: int _value; } A& A::instance(){ static A _Instance; return _Instance; } Я запускаю это на процессоре...
1789 просмотров
schedule 08.10.2022

Выравнивание массивов кучи в C и C++ для облегчения векторизации компилятора (GCC)
В настоящее время я готовлю класс шаблона контейнера-оболочки для std::vector , который автоматически создает multi-resolution pyramid элементов в своем std::vector . Ключевой вопрос сейчас заключается в том, что я хочу, чтобы создание пирамиды...
1346 просмотров

Выравнивание 16-байтовой памяти с использованием инструкций SSE
я пытаюсь избавиться от невыровненных загрузок и хранилищ для инструкций SSE для моего приложения, заменив _mm_loadu_ps() by _mm_load_ps() и выделение памяти с помощью: float *ptr = (float *) _mm_malloc(h*w*sizeof(float),16)...
3380 просмотров
schedule 05.10.2022

Самый эффективный способ чтения UInt32 с любого адреса памяти?
Каким будет наиболее эффективный способ прочитать значение UInt32 из произвольного адреса памяти в С++? (Предполагая архитектуру Windows x86 или Windows x64.) Например, рассмотрите возможность наличия указателя байта, который указывает где-то в...
2108 просмотров
schedule 27.10.2022

Это ошибка GCC при использовании опции -falign-loops?
Я играл с этой опцией, чтобы оптимизировать цикл for в нашей встроенной архитектуре ( здесь ). Однако я заметил, что когда для выравнивания требуется добавить более одной инструкции nop , компилятор генерирует одну nop , за которой следует столько...
638 просмотров
schedule 08.06.2022

Структура C (++) принудительно добавляет дополнительное дополнение
Я видел бесчисленное количество вопросов в форме «Мне не нравится дополнение, как его отключить», но еще не нашел ничего о том, чтобы заставить компилятор предоставить дополнительное дополнение. Конкретный случай, который у меня есть, выглядит как...
6737 просмотров
schedule 29.06.2022

sizeof дает неожиданный результат для моей структуры
В моем коде есть такая структура: struct BlockDescriptor { struct BlockDescriptor * pNext; bool _isFree; }; и я склонен полагать, что его размер равен 4 + 1 = 5 (4 для указателя и 1 для bool ), но по какой-то причине sizeof(struct...
145 просмотров

Как установить правильное выравнивание для массива структур OpenCL?
У меня есть следующая структура: C++: struct ss{ cl_float3 pos; cl_float value; cl_bool moved; cl_bool nextMoved; cl_int movePriority; cl_int nextMovePriority; cl_float value2; cl_float value3; cl_int...
3414 просмотров
schedule 05.02.2023

pragma упаковать контейнеры stl
Когда я объявляю такую ​​структуру: #pragma pack(1) structure MyStruct{ uint32_t first; uint8_t second; }; #pragma pack() Я, очевидно, хочу, чтобы это заняло 5 байтов памяти. Как тогда поведет себя такой вектор:...
1366 просмотров
schedule 13.10.2022

snprintf не сохраняет последний символ в буфере?
Я написал простую небольшую программу для чтения файла в следующем формате, используя snprintf, skip first 15 chars , next 9 chars are sequence number, next 2 char is message and so on. Меня интересует порядковый номер и сообщение, т.е. от...
918 просмотров
schedule 14.03.2022

Как я могу переносимо реализовать выровненное хранилище стека в С++ 03?
В коде C++03, как мне переносимо реализовать буфер unsigned char[sizeof(T)] , который имеет тот же размер и выравнивание, что и у заданного типа T ? Например: template<class T> void test() { unsigned char buffer[sizeof(T)]; //...
612 просмотров
schedule 02.11.2022

Как узнать, по какому смещению Delphi выравнивает мои поля записи
Delphi может выравнивать записи в границах слов, двойных и четверных слов, в зависимости от настройки {$A} и версии Delphi. Если мне нужно выполнить (плохой) код: ofSize = $00; <<-- hardcoded will break if I unpack the record....
590 просмотров
schedule 16.09.2022

Memcpy или присвоение структуры?
У меня есть следующий код, и я не уверен, следует ли использовать выравнивание структуры или memcpy для копирования структуры A в пользовательский массив символов/байтов «стека». Есть ли что-то выгодное/недостаточное в следующих двух вариантах кода...
879 просмотров
schedule 05.02.2024

Непрерывные данные для класса с собственной матрицей?
Являются ли члены этого простого класса непрерывными в памяти? class A{ A(){ /* somecode */} ~A(); Eigen::Matrix<5,1,double> a; Eigen::Matrix<9,1,double> b; }; std::vector<A> vec(10); char * p =...
153 просмотров
schedule 22.05.2023

С++ неправильные значения с пакетом прагмы
header1.h #pragma pack(4) header2.h #include <iostream> struct my_struct { unsigned int a; double b; }; __forceinline void show_h(my_struct* my_struct_ptr) { std::cout << sizeof(my_struct) << '\t' <<...
212 просмотров
schedule 08.08.2022

Проблема выравнивания PyTables dtype
Рассмотрим следующий код: import os import numpy as np import tables as tb # Pass the field-names and their respective datatypes as # a description to the table dt = np.dtype([('doc_id', 'u4'), ('word', 'u4'), ('tfidf', 'f4')], align=True)...
148 просмотров
schedule 27.12.2022