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