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