Partager via


Erreur : invalid-allocation-alignment

Erreur d’assainissement de l’adresse : alignement non valide de l’allocation

La _aligned_malloc fonction nécessite une puissance de 2 pour exprimer l’alignement. Nous simulons le calcul « externe » d’un facteur d’alignement à l’aide d’une variable globale non optimisée.

Exemple

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

Pour générer et tester cet exemple, exécutez ces commandes dans une invite de commandes développeur Visual Studio 2019 version 16.9 ou ultérieure :

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

Erreur résultante

Screenshot of debugger displaying invalid-allocation-alignment error in example 1.

Voir aussi

Vue d’ensemble de AddressSanitizer
Résoudre les problèmes connus liés à AddressSanitizer
Référence de build et de langage AddressSanitizer
Informations de référence sur le runtime AddressSanitizer
Octets d’ombre AddressSanitizer
Test cloud ou distribué AddressSanitizer
Intégration du débogueur AddressSanitizer
Exemples d’erreur AddressSanitizer