2016-09-24 5 views
0

Я новичок в malloc и выровненном malloc. Я знаю, как их использовать. Однако я точно не знаю, в каком случае мы должны использовать выровненный malloc вместо стандартного malloc. Вы можете мне объяснить, пожалуйста? Спасибо вам всем.Различия между выровненными malloc и стандартными malloc?

+0

Язык? Я предполагаю, что C, но вы также должны предоставить другие детали среды (OS, языковая реализация и т. Д.). Стандарт C имеет только 'malloc', который будет правильно выровнен для всех стандартных типов данных. – paxdiablo

+0

Я использую в стандарте C11 в Ubuntu – blackcafe

+0

Добавил теги как теги, пожалуйста, подтвердите и/или измените по мере необходимости. – paxdiablo

ответ

1

glibc documentation делает это достаточно ясно, где вы должны использовать aligned_alloc:

Адрес блока, возвращенного malloc или realloc в системах GNU всегда кратно восьми (или шестнадцати лет на 64-разрядных системах) , Если вам нужен блок, адрес которого кратен более высокой мощности, чем два, используйте aligned_alloc или posix_memalign.

Стандарт C уже гарантирует, что malloc возвратит соответствующим образом выровненный блок памяти для любого из стандартных типов, но может возникнуть ситуации, в которых вы хотите или должны строже выравнивание.

В качестве примера, я, кажется, припоминаю, что SSE2 (SIMD) инструкции необходимо их данные выровнены по границам 16 байт, так что вы можете использовать aligned_alloc, чтобы дать вам, что даже в системах, где malloc только гарантирует выравнивание по границе 8 байт ,

 Смежные вопросы

  • Нет связанных вопросов^_^