Sdílet prostřednictvím


Chyba: invalid-allocation-alignment

Chyba sanitizátoru adresy: neplatné zarovnání přidělení

Funkce _aligned_malloc vyžaduje pro vyjádření zarovnání mocninu 2. Pomocí neoptimalizované globální proměnné simulujeme "vnější" výpočet určitého faktoru zarovnání.

Příklad

// 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;
}

Pokud chcete tento příklad sestavit a otestovat, spusťte tyto příkazy v sadě Visual Studio 2019 verze 16.9 nebo novějším vývojářském příkazovém řádku:

cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe

Výsledná chyba

Snímek obrazovky ladicího programu s chybou neplatného zarovnání přidělení v příkladu 1

Viz také

Přehled AddressSanitizer
Známé problémy s addressSanitizerem
Referenční dokumentace k sestavení a jazyku AddressSanitizer
Referenční informace k modulu runtime AddressSanitizer
Stínové bajty AddressSanitizer
AddressSanitizer – cloud nebo distribuované testování
Integrace ladicího programu AddressSanitizer
Příklady chyb AddressSanitizer