Результаты поиска по запросу "memory-alignment"

2 ответа

Нераспределенный доступ вызывает ошибку на ARM Cortex-M4

У меня есть объект, адрес которого не выровнен по 4 байта. Это вызывает ошибку HardFault в процессоре при наличии инструкции STR, сохраняющей 2 регистра. Это сгенерированный код: 00000000 <_ZN8BaseAreaC1EPcmm>: 0: b510 push {r4, lr} 2: 4604 mov ...

2 ответа

«Указывает на неинициализированные байты» ошибки Valgrind

Я используюValgrindдля поиска утечек памяти в моем коде, и хотя утечек памяти не обнаружено, сообщается о некоторых ошибках, все они происходят из одного метода функции / класса: ==17043== ERROR SUMMARY: 10100 errors from 3 contexts (suppressed: ...

8 ответов

Я редактировал вопрос. Я думаю, что теперь стало понятнее. Я не хочу делать атомарные строковые назначения. Интересно, меняет ли это выравнивание памяти.

ал статью оПрограммирование без блокировки [http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx]в MSDN. Это говорит: На всех современных процессорах можно предположить, что читает и пишет естественно выровненные нативные типы ...

ТОП публикаций

1 ответ

@geza Это явно. Абстрактная машина не заботится о выравнивании основного HW. Если компилятор говорит, что память не выровнена, то вы получите UB независимо от HW.

ал через стандарт о неприсоединенном доступе, но ничего не нашел (возможно, я был непреднамеренным). Это неопределенное поведение? Определена ли реализация? Поскольку многие современные процессоры поддерживают не выровненный доступ, было бы ...

1 ответ

 определяется только для CvMat, а для cv :: Mat вы должны использовать вместо этого метод

кто-нибудь, пожалуйста, объясните мне, как выравнивание строк в OpenCVCvMat (или его версия C ++cv::Mat) работает? Например, предположим, у меня есть матрица CvMat *cvmat = cvCreateMat(2,3,CV_8UC1); cvSet2D( cvmat, 0, 0, cvScalar(1) ); cvSet2D( ...

4 ответа

 будет скомпилировано в

отрим следующую структуру: struct Vector4D { union { double components[4]; struct { double x, y, z, t; } Endpoint; }; };Мне кажется, что я видел нечто подобное в структуре IPAddress WinApi. Идея состоит в том, чтобы дать мне возможность ...

9 ответов

Библиотека времени выполнения C

у следующее работает, а не выбрасывает какую-то ошибку сегментации? char *path = "/usr/bin/"; char *random = "012"; // path + random + \0 // so its malloc(13), but I get 16 bytes due to memory alignment (im on 32bit) newPath = (char *) ...

4 ответа

Либо выделите память в куче (которая имеет гарантию выравнивания), либо используйте

я есть массив, который используется в качестве основной памяти объекта типаT: char memory[sizeof T]; . . . new(memory) T(whatever);Как я могу убедитьсяmemory выровнен правильно дляT объекты? В C ++ 0x я мог бы просто сказать: alignas(T) char ...

6 ответов

 также в C11, а не только в C ++ 11.

предотвратить ложное совместное использование, я хочу выровнять каждый элемент массива по строке кэша. Итак, сначала мне нужно узнать размер строки кэша, чтобы я назначил каждому элементу это количество байтов. Во-вторых, я хочу, чтобы начало ...

4 ответа

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

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