http://www.exploit-db.com/exploits/28974/Here's one. A use-after-free triggered due to some faulty logic.
Mistake? Yes. Amateur mistake? No. Even very experienced C/C++ programmers, such as Microsoft's top devs, may accidentally double-free, or use already-free memory.