AddressSanitizer ASan
Detector de erros de memória baseado em compilador, do Google (2012). Compile com -fsanitize=address e o programa trava no primeiro erro com stack trace completo, em vez de se comportar de forma estranha três horas depois.
A técnica é memória sombra (shadow memory): um oitavo do espaço de endereçamento é reservado para descrever se cada byte é válido, e todo acesso à memória recebe uma verificação instrumentada. Alocações são cercadas por "zonas vermelhas" e a memória liberada fica em quarentena, o que captura estouros de heap e stack, use-after-free, use-after-return e double free. Custa cerca do dobro do tempo de execução e o triplo de memória — coisa de teste e CI, não de produção. Os irmãos da família: ThreadSanitizer (condições de corrida), MemorySanitizer (memória não inicializada), UndefinedBehaviorSanitizer. Disponível tanto no Clang quanto no GCC.