A simple, yet effective way to avoid double-free and access-freed-memory vulnerabilities is to set pointers to NULL once they have been freed. The specification of the free function states that calling free on a NULL pointer incurs no action. As a result, if a pointer is set to NULL after it is freed, the chances of introducing vulnerabilities related to free are eliminated.
References
ISO/IEC 9899-1999 Section 7.20.3.2 The free function