1 ================ 2 LeakSanitizer 3 ================ 4 5 .. contents:: 6 :local: 7 8 Introduction 9 ============ 10 11 LeakSanitizer is a run-time memory leak detector. It can be combined with 12 :doc:`AddressSanitizer` to get both memory error and leak detection, or 13 used in a stand-alone mode. LSan adds almost no performance overhead 14 until the very end of the process, at which point there is an extra leak 15 detection phase. 16 17 Usage 18 ===== 19 20 :doc:`AddressSanitizer`: integrates LeakSanitizer and enables it by default on 21 supported platforms. 22 23 .. code-block:: console 24 25 $ cat memory-leak.c 26 #include <stdlib.h> 27 void *p; 28 int main() { 29 p = malloc(7); 30 p = 0; // The memory is leaked here. 31 return 0; 32 } 33 % clang -fsanitize=address -g memory-leak.c ; ASAN_OPTIONS=detect_leaks=1 ./a.out 34 ==23646==ERROR: LeakSanitizer: detected memory leaks 35 Direct leak of 7 byte(s) in 1 object(s) allocated from: 36 #0 0x4af01b in __interceptor_malloc /projects/compiler-rt/lib/asan/asan_malloc_linux.cc:52:3 37 #1 0x4da26a in main memory-leak.c:4:7 38 #2 0x7f076fd9cec4 in __libc_start_main libc-start.c:287 39 SUMMARY: AddressSanitizer: 7 byte(s) leaked in 1 allocation(s). 40 41 To use LeakSanitizer in stand-alone mode, link your program with 42 ``-fsanitize=leak`` flag. Make sure to use ``clang`` (not ``ld``) for the 43 link step, so that it would link in proper LeakSanitizer run-time library 44 into the final executable. 45 46 Supported Platforms 47 =================== 48 49 * Android aarch64/i386/x86_64 50 * Fuchsia aarch64/x86_64 51 * Linux arm/aarch64/mips64/ppc64/ppc64le/riscv64/s390x/i386/x86\_64 52 * macOS aarch64/i386/x86\_64 53 * NetBSD i386/x86_64 54 55 More Information 56 ================ 57 58 `<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>`_ 59