AddressSanitizer
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.