Перераспределение памяти изменяет первоначально более строгое выравнивание объекта
Выравнивание, измененное после перераспределения памяти, происходит, когда вы используете realloc()
изменить размер объектов со строгими требованиями выравнивания памяти.
Указатель возвращен realloc()
может быть соответственно присвоен объектам с менее строгими требованиями выравнивания. Неправильно выровненное выделение памяти может привести к недостаточному наполнению буфера или переполнению, незаконно разыменованному указателю или доступу к произвольным ячейкам памяти. В процессорах, которые поддерживают неправильно выровненную память, выделение влияет на производительность системы.
Перераспределять память:
Измените размер блока памяти.
В Windows® используйте _aligned_realloc()
с аргументом выравнивания, используемым в _aligned_malloc()
выделить исходный блок памяти.
В UNIX/Linux используйте ту же функцию с тем же аргументом выравнивания, используемым, чтобы выделить исходный блок памяти.
Скопируйте исходное содержимое в новый блок памяти.
Освободите исходный блок памяти.
Эта фиксация задала реализацией поведение. Реализация не может поддержать требуемое выравнивание памяти и может иметь дополнительные ограничения для размера новой памяти.
Группа: Динамическая память |
Язык: C | C++ |
Значение по умолчанию: на |
Синтаксис командной строки:
ALIGNMENT_CHANGE
|
Удар: низко |