Catching Memory Corruption with LLVM AddressSanitizer
Learn how LLVM's AddressSanitizer uses shadow memory and redzones to turn silent memory corruption into immediate, actionable crash reports in C/C++.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
Learn how LLVM's AddressSanitizer uses shadow memory and redzones to turn silent memory corruption into immediate, actionable crash reports in C/C++.
Rust's borrow checker prevents data races without garbage collection by enforcing that mutable and immutable references cannot alias the same data simultaneously.
An architecture note on Rust's ownership and borrowing system: requirements, minimal design, trust boundaries, operational checks, failure modes, and when to reconsider the design. Includes a concrete buffer example and verification checklist.
Rust enforces memory safety at compile time through ownership, borrowing, and lifetimes—eliminating the need for a garbage collector while preventing data races and dangling pointers.
Rust guarantees memory safety by enforcing single ownership and borrowing rules; lifetimes tie references to data, eliminating use-after-free and data races without a garbage collector.
Step‑by‑step guide to enable ARM64 Memory Tagging Extension, compile a test program with -fsanitize=memtag, and verify that memory safety faults are reported via synchronous tag‑check exceptions.
Stop passing pointer-size pairs in C++. Learn how C++20's std::span provides a safer, non-owning view of contiguous memory to prevent buffer overflows.
Ownership in Rust is an engineering decision about who owns data, who may read it, and how long references stay valid. Using borrowing rules to shape APIs removes use-after-free and dangling pointers at compile time.
Carbon's experimental pointer and reference model aims to make C++ interoperability memory-safe without wrapper overhead. This architecture note examines the trust boundary, operational checks, and failure modes.