1
Betrachten Sie den folgenden Code. Es wird kein Fehler angezeigt, wenn ich es kompiliere und mit dem Adressdesinfizierer austrage. Aber es sollte einen Fehler geben, d. H. Zuweisen/Zugreifen auf den Speicherbereich außerhalb der Grenzen? Warum spricht Desinfektionsmittel nicht an?Falsch negativ mit Adress-Desinfektionsmittel?
int arr[30];
int main(){
arr[40] = 34;
printf(“%d”, arr[40]);
}
Vielen Dank!
clang -fsanitize=address -fno-omit-frame-pointer test.c
./a.out
Aber selbst wenn ich int arr [30] lokal, statt global machen, es keinen Fehler werfen. Selbst die Verwendung von -fno-common wirft keinen Fehler auf. –
Sicher, darum geht es bei A1. Im Grunde ist das GCC-Frontend "clever" genug, um offensichtlich schlechten Zugang früh wegzuwerfen, bevor ASan eine Chance hat einzugreifen. – yugr