SaiphC | Address Sanitizer* | Valgrind** | |
Detecting memory access violations | |||
Out-of-bounds access of stack-allocated array | +++ | + | - |
Out-of-bounds access of heap-allocated array | +++ | + | + |
Out-of-bounds access of global array | +++ | - | - |
Null (and uninitialized) pointer dereference | +++ | +++ | +++ |
Use-after-free (stack-allocated) | ++ | - | - |
Use-after-free (heap-allocated) | ++ | - | + |
Double free | ++ | + | + |
Reachable Dangling Pointer | ++ | - | - |
Stack overflow | +++ | - | - |
Error Reporting | |||
Reports the cause | +++ | + | + |
Reports source location | +++ | + | + |
Reports backtrace | +++ | + | + |
Linking type supported | |||
Static linking | ✔ | ✔ | |
Dynamic linking | ✔ | ✔ | ✔ |
+++always, ++very high probability, +most times, -never, and ✔ supported
* clang-7.0.0; ** valgrind-3.10