Defenses: Hardening the Heap
Developer discipline: null out pointers after free,
avoid manual lifetime juggling, use smart pointers / RAII in C++.
Key Takeaway
Defense in depth: allocator checks, read-only GOT, randomization, and safe coding each remove a rung of the ladder.