Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Błąd:
Błąd oczyszczania adresu: nieprawidłowe wyrównanie alokacji
Uwagi
Funkcja _aligned_malloc wymaga mocy 2 do wyrażenia wyrównania. Symulujemy obliczenie "zewnętrzne" pewnego współczynnika wyrównania przy użyciu niezoptymalizowanej zmiennej globalnej.
Przykład
// 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;
}
Aby skompilować i przetestować ten przykład, uruchom następujące polecenia w wierszu polecenia programu Visual Studio 2019 w wersji 16.9 lub nowszej:
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
Wynikowy błąd
Zobacz też
AddressSanitizer — omówienie
Rozwiązywanie znanych problemów z programemSanitizer
Dokumentacja języka i kompilacji narzędzia AddressSanitizer
AddressSanitizer runtime reference (Dokumentacja środowiska uruchomieniowego AddressSanitizer)
Bajty w tle addressSanitizer
AddressSanitizer — chmura lub testowanie rozproszone
Integracja debugera AddressSanitizer
Przykłady błędów addressSanitizer