【总结】C++ 出现内存问题

来源:互联网 发布:网络挂号:厦门长庚医院 编辑:程序博客网 时间:2024/06/05 13:18

C++里可能出现内存问题基本上出自这几个方面:

1.缓冲区溢出(buffer overrun)。

2.空悬指针、野指针。

3.重复释放(double delete)。

4.内存泄漏(memory leak)。

5.不配对的 new[]/delete。

6.内存碎片(memory fragmentation)。

解决思路:

1.缓冲区溢出:用std::vector<char>/std::string 或自己编写buffer class来管理缓冲区,自动记住用缓冲区的长度并通过成员函数而不是裸指针来修改缓冲区。

2.空悬指针、野指针:用shared_ptr/weak_ptr。

3.重复释放:用scoped_ptr,只在对象析构的时候释放一次。

4.内存泄漏:用scoped_ptr.对象析构的时候自动释放内存。

5.不配对的new[]/delete:把new[]统统替换为std::vector/scoped_array.当然应该有良好的习惯,有new[]就记得delete就行。


 来源读书笔记

0 0
原创粉丝点击