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