Потерянный std::align в GCC.
В общем мне понадобилась данная штука.
А в gcc 4.8 её и нет. Обновил до последнего 4.9.2, но там её тоже нет. Хотя в доках gcc написано что уже давно есть (N2341). В итоге выяснилось что функцию забыли реализовать и обещают что-то сделать только в gcc 5.0. Что теперь мне делать? Мне надо получить указатель на выровненный в 64 байта (кеш линия) участок памяти. Память динамически выделяется и размер больше мегабайта, так что всякие выравнивания типов тут не подойдут. Также хотелось бы обойтись возможностями стандарта, а не компилятора. Кто-нибудь сталкивался с подобными проблемами? |
Ответ: Потерянный std::align в GCC.
Я писал математику для своего сишного движка на SSE, поэтому нужно было выравнивание по 16. Использовал mingw, там есть _aligned_malloc
под линух есть posix_memalign http://man7.org/linux/man-pages/man3...emalign.3.html |
Ответ: Потерянный std::align в GCC.
Цитата:
Но в общем то что мне использовать пока особой разницы нет. Плохо что придется создавать два разных кода под разные ОС. Так-то можно было бы напрямую страницы создавать через VirtualAlloc в WinAPI и аналогичные функции в линухе. |
Ответ: Потерянный std::align в GCC.
Не вникал в проблему но может подойдет?
Код:
#pragma pack(push, 1) |
Ответ: Потерянный std::align в GCC.
Цитата:
Пока posix_memalloc'а будет достаточно, а затем лучше исправленного gcc подожду. Или например в clang'е работает нормально. |
Часовой пояс GMT +4, время: 22:44. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot