C++常见的内存问题与解决:
原始指针:
1 动态内存使用者,仅仅是使用,不负责该对象的生命周期。这种情况下原始指针不会有任何问题,简洁明了,不会影响引用计数,更不会导致循环引用。
2 几乎所有的第三方库都是以这种方式使用用户的数据的。
智能指针:
1 动态对象的拥有着使用,优先考虑unique_ptr,其次考虑shared_ptr。这样对线程安全。
2 对开发人员友好,不用操心释放的问题。
其他情况:
1 缓冲区溢出:解决使用std::vector<char> std::string
2 空悬指针野指针:使用shared_ptr weak_ptr
3 重复释放:使用 scoped_ptr
4 内存泄漏:使用scoped_ptr
5 不配对的new/[] deleted :使用std::vector scoped_array
参考:陈硕《Linux多线程服务端编程》