Leksykon IT › Programowanie › AddressSanitizer

AddressSanitizer

Programowanie Svenska → Zaktualizowano: 2026-10-05

Kompilatorowy detektor błędów pamięci od Google (2012). Wystarczy skompilować z -fsanitize=address, a program przerwie działanie przy pierwszym błędzie, wypisując pełny stos wywołań — zamiast dziwnie się zachowywać trzy godziny później.

Technika polega na pamięci cieniowej: jedna ósma przestrzeni adresowej opisuje, czy każdy bajt jest poprawny, a każdy dostęp do pamięci dostaje instrumentowaną kontrolę. Alokacje otaczają strefy ochronne (red zones), a zwolniona pamięć trafia do kwarantanny, co wyłapuje przepełnienia sterty i stosu, use-after-free, use-after-return i podwójne zwolnienie. Koszt to ok. 2× czasu działania i 3× pamięci, więc miejsce AddressSanitizera jest w testach i CI, nie na produkcji. Reszta rodziny: ThreadSanitizer (wyścigi danych), MemorySanitizer (niezainicjowana pamięć), UndefinedBehaviorSanitizer. Dostępny zarówno w Clangu, jak i w GCC.

← Wróć do leksykonu