C++内存常见问题

2018-09-25  本文已影响0人  m风满楼
  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。
上一篇下一篇

猜你喜欢

热点阅读