Вопросы по теме 'memory-alignment'
Всегда ли члены класса/структуры создаются в памяти в том порядке, в котором они были объявлены?
Это вопрос, возникший в результате ответа Роба Уокера здесь .
Предположим, я объявляю класс/структуру следующим образом:
struct
{
char A;
int B;
char C;
int D;
};
Можно ли предположить, что эти члены будут объявлены именно...
13013 просмотров
schedule
20.11.2022
Почему Mac ABI требует выравнивания стека по 16 байт для x86-32?
Я могу понять это требование для старых систем PPC RISC и даже для x86-64, но для старого проверенного x86? В этом случае стек необходимо выровнять только по 4-байтовым границам. Да, некоторые инструкции MMX / SSE требуют 16-байтового выравнивания,...
7236 просмотров
schedule
14.08.2022
Убедительные примеры пользовательских распределителей C++?
Каковы действительно веские причины отказаться от std::allocator в пользу индивидуального решения? Сталкивались ли вы с ситуациями, когда это было абсолютно необходимо для корректности, производительности, масштабируемости и т. д.? Есть...
102957 просмотров
schedule
12.04.2022
Выровнены ли переменные стека GCC __attribute__((aligned(x)))?
у меня есть следующий код:
#include <stdio.h>
int
main(void)
{
float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0};
printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]);
}
И у меня есть...
78018 просмотров
schedule
06.02.2023
Почему структура, состоящая из char, short и char (именно в таком порядке), при компиляции на C++ с включенной 4-байтовой упаковкой превращается в 6-байтовую структуру?
Я думал, что понял, как C/C++ обрабатывает выравнивание элементов структуры. Но я получаю странные результаты для определенного расположения в Visual Studio 2008 и 2010.
В частности, я обнаружил, что структура, состоящая из char, short и char,...
1434 просмотров
schedule
19.10.2022
объединение упакованных данных с выровненным доступом к памяти
Я пытаюсь выполнить оптимизацию памяти, которая должна быть теоретически возможной, но я начинаю сомневаться, что она находится в пределах возможностей arm-elf-gcc. Пожалуйста, покажи мне, что я ошибаюсь.
У меня есть встроенная система с очень...
2705 просмотров
schedule
12.09.2022
Проблема неявного выравнивания GCC. (64-битный код)
Как я могу явно отключить выравнивание определенной переменной в gcc? Возьмите этот код:
typedef struct{
unsigned long long offset;
unsigned long long size;
unsigned long type;
unsigned long acpi;
}memstruct;
memstruct *memstrx;
Это...
4142 просмотров
schedule
20.03.2024
Выделение памяти Win32 с большим выравниванием
Мне нужно выделить большие области памяти (мегабайты) с большими выравниваниями (также потенциально в диапазоне мегабайт). Семейство функций VirtualAlloc, похоже, не предоставляет возможностей для этого.
Что я делаю в Linux, чтобы достичь этого,...
1463 просмотров
schedule
04.04.2023
Выравнивание структуры данных для реализации сериализации в C ++
Я понимаю теорию выравнивания структур данных и использую эту теорию для реализации сериализации. Однако мне трудно начать работу с настоящим кодом. Может ли кто-нибудь дать мне простой пример, чтобы показать, как это работает?
Скажем так:...
905 просмотров
schedule
21.04.2022
Двойное выравнивание
После обсуждения в этой публикации я понял, что основная причина согласования члены структуры - это производительность (и некоторые ограничения архитектуры).
Если мы исследуем Microsoft (Visual C ++), Borland / CodeGear (C ++ - Builder), Digital...
9094 просмотров
schedule
08.10.2023
Выравнивание 16 не соблюдается при использовании автоматического ключевого слова?
При компиляции с VS2012 и работе с библиотекой DirectXMath я столкнулся с проблемой, из-за которой оказалось, что компилятор не выравнивает мою XMMATRIX. Я упростил задачу до следующего.
#include <DirectXMath.h>
using namespace DirectX;...
1140 просмотров
schedule
29.05.2023
Каков фактический эффект успешного невыровненного доступа на x86?
Я всегда слышу, что невыровненный доступ - это плохо, потому что он либо вызовет ошибки времени выполнения и приведет к сбою программы, либо замедлит доступ к памяти. Однако я не могу найти реальных данных о том, насколько они замедлят работу....
9463 просмотров
schedule
24.05.2022
Спецификатор alignas работает с "новым"?
Мой вопрос довольно простой;
Спецификатор alignas работает с "новым"? То есть, если структура определена для выравнивания, будет ли она выровнена при выделении с помощью new?
6075 просмотров
schedule
01.06.2022
GCC считает указатели int невыровненными на ARM
У меня есть следующая тестовая программа:
#include <string.h>
int q(int *p) {
int x;
memcpy(&x,p,sizeof(int));
x+=12;
memcpy(p,&x,sizeof(int));
return p[0];
}
Когда я компилирую это с помощью GCC 4.7.2 для...
3998 просмотров
schedule
17.05.2022
Предупреждение C4121: поведение и выравнивание структуры (Visual Studio 2010)
Рассмотрим ниже объявление. (Visual Studio 2010, уровень предупреждения 4)
#pragma pack(push, 2)
#define PADDING 1 // --- <case 1>
/*
#define PADDING 2 // --- <case 2>
*/
struct foo
{
char a[PADDING];
int b;
};
Симптом...
1449 просмотров
schedule
07.02.2023
указывает на неинициализированные байты. Ошибки Valgrind
Я использовал Valgrind для поиска утечек памяти в моем коде, и, хотя утечек памяти не обнаружено, сообщается о некоторых ошибках, все они возникают в одном методе функции/класса:
==17043== ERROR SUMMARY: 10100 errors from 3 contexts (suppressed:...
12933 просмотров
schedule
17.05.2022
Возможно ли, чтобы тип имел требования к выравниванию, отличные от «выравнивания по n байтам»
Например, рассмотрим следующее:
Предположим, что int выровнен по 4 байтам, а long — по 8 байтам.
struct example
{
int a;
long b;
int c;
};
очевидным способом для компилятора разместить это в памяти было бы:...
217 просмотров
schedule
04.05.2023
Каков рекомендуемый способ выравнивания памяти в С++ 11?
Я работаю над реализацией кольцевого буфера с одним производителем и одним потребителем. У меня есть два требования:
Выровняйте один экземпляр кольцевого буфера, выделенный в куче, по строке кэша.
Выровняйте поле в кольцевом буфере по строке...
34292 просмотров
schedule
05.09.2022
Выравнивание dtype таблицы Pytables
Если я создам следующий выровненный массив Numpy
import numpy as np
import tables as pt
numrows = 10
dt = np.dtype([('date', [('year', '<i4'), ('month', '<i4'), ('day', '<i4')]),
('apples', '<f8'),...
255 просмотров
schedule
23.12.2022
выравнивание памяти в структуру - размер выравнивания равен наибольшему размеру члена
Я хотел бы знать, почему мы должны принять в качестве размера выравнивания структуры размер выравнивания, равный наибольшему размеру члена в структуре.
Пример :
struct MixedData
{
char Data1;
short Data2;
int Data3;
char Data4;...
300 просмотров
schedule
28.07.2022