所有优秀的C++程序员都知道如何避免泄漏内存(或套接字等资源):
std::auto_ptr, boost::shared_ptr.但是,内存泄漏仍然会发生.当您在程序中发现内存泄漏时,即使您使用上述技术,也要指出最常见的问题.
我开始:
有时您忘记将基类的析构函数定义为虚拟.所以派生类引用的所有派生类都没有被正确销毁并因此泄露.
除了泄漏之外,还有更多类型的错误.按从最坏到最好的顺序:
数据存储在不应该存在的区域.这导致了大多数安全问题,并且是迄今为止最难追查的问题.
X被存储到为基本类型保留的数组元素X,并且其大小X大于其基数的大小.new/ free,malloc/ delete)delete或者free在同一个指针上调用两次.程序不再使用的内存仍然分配.
new[]/ delete而不是new[]/的不匹配delete[].smart_ptr在圆形数据结构中使用时可能会发生,而不会注意使用weak_ptr循环链接.