美文网首页
C++内存常见问题

C++内存常见问题

作者: m风满楼 | 来源:发表于2018-09-25 12:03 被阅读0次
    • C++ 里可能出现的内存问题大致有这么几个方面:
    1. 缓冲区溢出(buffer overrun)。
    2. 空悬指针/野指针。
    3. 重复释放(double delete)。
    4. 内存泄漏(memory leak)。
    5. 不配对的 new[]/delete。
    6. 内存碎片(memory fragmentation)

    正确使用智能指针能很轻易地解决前面 5 个问题:

    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。

    相关文章

      网友评论

          本文标题:C++内存常见问题

          本文链接:https://www.haomeiwen.com/subject/dgnkoftx.html