美文网首页
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++内存常见问题

    C++ 里可能出现的内存问题大致有这么几个方面: 缓冲区溢出(buffer overrun)。 空悬指针/野指针。...

  • c++内存管理

    c++内存管理长文 c++内存管理

  • 内存管理

    内容包括: C++内存管理 Java内存管理 C++内存管理 内存分配方式 在C++中,内存分成5个区,分别是栈、...

  • 面试常见问题 - 目录

    面试常见问题01 - C++相关(施工ing) 面试常见问题02 - 算法与数据结构(施工ing) 面试常见问题0...

  • iOS内存问题分析

    内存方面常见问题:1、UIGraphicsEndImageContextUIGraphicsBeginImageC...

  • C++运算符重载实现(加号、左移、递增、赋值、关系运算符、函数调

    先来复习一下C++的内存分区问题~ C++内存分区 C++程序的内存分区可划分为四大内存分区:堆、栈、全局/静态存...

  • C/C++内存和crash分析

    C/C++内存和crash分析 标签(空格分隔): C/C++ native内存 段错误 native内存泄露 C...

  • 内存池

    参考资料 C++内存池介绍与经典内存池的实现 C++ 应用程序性能优化,第 6 章:内存池 linux c++ 内...

  • C++中New关键字和命名空间

    动态内存分配 C++中的动态内存分配C++中通过new关键字进行动态内存申请C++中的动态内存申请是基于类型进行的...

  • Java内存泄漏

    本文将会介绍: C++中的内存泄露 Java内存管理与垃圾回收 Java中的内存泄漏 一、C++中的内存泄露 在大...

网友评论

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

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