Я всегда предполагал, что malloc возвращает выделенный блок памяти с адресом, который выровнен на 16 байт для 64-битных систем, используя как Visual Studio, так и gcc. Тем не менее, я читал некоторые противоречивые статьи по этому вопросу. Сайт MSDN очень прост в этом, но документация GNU намного более «нюансирована».Что такое выравнивание байтов выделенного блока памяти на 64-битных платформах?
Любые разъяснения были бы наиболее полезными.
Большие ответы здесь:
Помогает ли это? https://www.gnu.org/software/libc/manual/html_mono/libc.html#Aligned-Memory-Blocks – Milack27
gcc не предоставляет стандартную библиотеку. Вы должны прочитать документацию 'glibc'. Но на самом деле возникает вопрос: почему вас это вообще волнует? 'malloc' гарантирует, что возврат блока корректно выровнен для любого типа вашей платформы. Если этого недостаточно, либо 'malloc' самостоятельно не подходит, либо вы должны пересмотреть свой дизайн. И: В какой документации вы читали? Что конкретно ** ** не ясно? Что вы имеете в виду «намного больше нюансов»? – Olaf
@Olaf Теперь у нас есть 64-байтные (512-битные) типы векторов, поэтому «выровненный для любого типа данных вашей платформы» дико оптимистичен. Microsoft уникальна тем, что «malloc» не имеет значения. – Potatoswatter