![]() |
|
|
![]()
|
|
| victor79 |
|
|||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
программа компилируемая на mingw, по умолчанию malloc выдает выравнивание под 8 байт. А мне для sse нужно 16, может кто знает, есть ли опция такая для компилятора?
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
компилятор здесь не причем
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| victor79 |
|
|||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
тут два варианта, либо используется malloc системы виндовс, тогда на него можно воздействовать только если есть такое в винапи, или используется внутренний, тогда возможно по дефайну или по установке переменной. И вопрос есть ли такое, и где его искать? И можно потратить часы на поиск ответа, или вдруг кто уже знает, и можно не тратить на время на поиск ответа.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Можно выделить больше памяти и выравнять самому.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
есть ф-я VirtualAlloc, с ее помощью можно написать свою версию malloc
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
VirtualAlloc выделяет минимум страницу памяти, 4Кб для выделения в хипе надо использовать HeapAlloc, который впрочем, и используется стандартным malloc Добавлено через 3 минуты и 16 секунд для получения выровненных адресов в хипе видимо следует создать свой хип, и выделять там только куски памяти кратные 16, тогда каждый начальный адрес тоже будет кратен 16 либо вообще отказаться от системного хипа и брать память в заранее выделенном массиве |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
А как же список блоков? malloc в дебаговой версии выделяет на 10 байт больше для каждого выделения для системной информации, в дебаговой 36 байт сверх. Если при каждой операции выделить памяти на 15 байт больше чем нада, то такой адрес будет гарантированно выравненным, а если известно что malloc выравнивает на границу 8ми байт, то достаточно выделить на 8 байт больше, чтобы прибавить их к указателю в случае если он не выравнен на 16 байт. Но в таком случае придется написать свою функцию освобождения таких блоков, чтобы перед удалением провести обратное смещение на 8 байт. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Alexeis, это стандартный маллок чтото выделяет сверх того что ему заказали, а если написать свой этого не будет
это для С++ но для С принцип тот же Это сообщение отредактировал(а) GoldFinch - 5.4.2009, 20:12 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
GoldFinch, и что? Если выделить несколько раз по 16 байт, то будут адреса будут смещены на 16 строго байт? не на 26 или 72?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
да, действительно, кратность 16 не получается
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
GoldFinch, HeapAlloc это куча, а все кучи работают сходно, они хранят информацию о блоке памяти в самом блоке. Так эффективнее. Иначе пришлось бы выделять 2 блока памяти один под описатель и один под саму память.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: нет Всего: 181 |
Есть еще posix_memalign
Добавлено через 2 минуты и 26 секунд Мы её кстати как раз для SSE2 и использовали -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | GNU toolchain | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |