Ошибка: invalid-allocation-alignment
Ошибка санитизатора адресов: недопустимое выравнивание выделения
Для _aligned_malloc
выражения выравнивания функция требуется значение 2. Мы имитируем вычисление "внешнего" коэффициента выравнивания с помощью неоптимизированной глобальной переменной.
Пример
// example1.cpp
// invalid-allocation-alignment error
#include <Windows.h>
int ExternalAlign = 5;
int main(){
// this externally calculated alignment of 5 isn't valid.
void* ptr = _aligned_malloc(8,ExternalAlign);
return (ptr == nullptr && errno == EINVAL) ? 0 : -1;
}
Чтобы создать и проверить этот пример, выполните следующие команды в командной строке разработчика Visual Studio 2019 версии 16.9 или более поздней:
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
Результирующая ошибка
См. также
Обзор AddressSanitizer
Известные проблемы AddressSanitizer
Справочник по сборке и языку AddressSanitizer
Справочник по среде выполнения AddressSanitizer
Теневой байт AddressSanitizer
Облачное или распределенное тестирование AddressSanitizer
Интеграция отладчика AddressSanitizer
Примеры ошибок AddressSanitizer