Fehler: allocation-size-too-big

Bereinigungsfehler: Zuordnungsgröße zu groß

In diesem Beispiel wird der Fehler gezeigt, der gefunden wurde, wenn eine Zuordnung für den Heap zu groß ist. Beispiel für die LLVM-Compiler-rt-Testsuite.

Beispiel

// example1.cpp
// allocation-size-too-big error
#include <stdio.h>
#include <malloc.h>
#include <memory.h>

int x = 1000;
int y = 1000;

__declspec(noinline) void bad_function() {

  char* buffer = (char*)malloc(x * y * x * y); //Boom!

  memcpy(buffer, buffer + 8, 8); 
}

int main(int argc, char **argv) {
    bad_function();
    return 0;
}

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 einen zu großen Fehler in Zuordnungsgröße in Beispiel 1 anzeigt.

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