Fehler: invalid-allocation-alignment

Adressbereinigungsfehler: ungültige Zuordnungsausrichtung

Für die _aligned_malloc Funktion ist eine Potenz von 2 erforderlich, um die Ausrichtung auszudrücken. Wir simulieren die "externe" Berechnung eines Ausrichtungsfaktors mithilfe einer nicht optimierten globalen Variable.

Beispiel

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

Führen Sie zum Erstellen und Testen dieses Beispiels die folgenden Befehle in einer Visual Studio 2019,16.9- oder höher-Entwickler-Eingabeaufforderung aus:

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

Resultierender Fehler

Screenshot des Debuggers, der den Fehler

Siehe auch

AddressSanitizer -Übersicht
Beheben bekannter Probleme mit demSanitizer
AddressSanitizer Build- und Sprachreferenz
AddressSanitizer-Laufzeitreferenz
AddressSanitizer-Schattenbytes
AddressSanitizer-Cloud oder verteilte Tests
AddressSanitizer Debugger-Integration
Beispiele für AddressSanitizer-Fehler