Errore: invalid-allocation-alignment

Errore di sanificazione dell'indirizzo: allineamento allocazione non valido

La _aligned_malloc funzione richiede una potenza pari a 2 per esprimere l'allineamento. Si simula il calcolo "esterno" di un fattore di allineamento usando una variabile globale non ottimizzata.

Esempio

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

Per compilare e testare questo esempio, eseguire questi comandi in un prompt dei comandi per sviluppatori di Visual Studio 2019 versione 16.9 o successiva:

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

Errore risultante

Screenshot del debugger che mostra un errore di allineamento dell'allocazione non valido nell'esempio 1.

Vedi anche

Panoramica di AddressSanitizer
Problemi noti di AddressSanitizer
Riferimento alla compilazione e al linguaggio AddressSanitizer
Informazioni di riferimento sul runtime AddressSanitizer
Byte ombreggiatura AddressSanitizer
AddressSanitizer cloud o test distribuiti
Integrazione del debugger AddressSanitizer
Esempi di errore addressSanitizer