前戏 先抛出两个问题 如果delete一个指针,但是它真实的类型和指针类型不一样会发生什么? 是谁调用了析构函数? 下面这段代码会发生什么有趣的事情? 看一下 ...
new与赋值的坑 赋值 assignment 和new运算符在C 与Java 或C 中的行为有本质的区别。在Java中,new是对象的构造,而赋值运算是引用的传递 而在C 中,赋值运算符意味着 构造 ,或者 值的拷贝 ,new运算符意味着在堆上分配内存空间,并将这块内存的管理权 责任 交给用户。C 中的不少坑,就是由new和赋值引起的。 在C 中使用new的原因除了堆上能定义体积更大的数据结构之外 ...
2014-03-01 01:54 1 4438 推荐指数:
前戏 先抛出两个问题 如果delete一个指针,但是它真实的类型和指针类型不一样会发生什么? 是谁调用了析构函数? 下面这段代码会发生什么有趣的事情? 看一下 ...
引入 shared_ptr 是c++为了提高安全性而添加的智能指针,方便了内存管理。 特点 shared_ptr 是通过指针保持对象共享所有权的智能指针。多个 shared_ptr 对象可占有同一对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁 ...
boost::shared_ptr是boost库中用来管理指针的模板,使用它需要#include <boost/shared_ptr.hpp>。本文介绍它的一些基本用法。 第一,boost::shared_ptr管理的指针所指向的对象必须在堆中,因为该模板会在对象离开作用域后调用 ...
0、异常安全 C++没有内存回收机制,每次程序员new出来的对象需要手动delete,流程复杂时可能会漏掉delete,导致内存泄漏。于是C++引入智能指针,可用于动态资源管理,资源即对象的管理策略 ...
目录 shared_ptr基本用法 头文件 声明方法 增加计数 得到原指针 一个例子 shared_ptr 初始化shared_ptr对象 指定删除器 shared_ptr 共享指针是怎样计数的 std::shared_ptr 原理 std::shared_ptr使用 ...
shared_ptr的使用和陷阱 shared_ptr的使用 分配内存 ...
shared_ptr是通过指针保持对象共享所有权的智能指针。多个shared_ptr对象可占有同一资源,当最后一个shared_ptr对象被销毁或者通过operator=,reset()操作赋予另一指针时,其管理的资源才会被回收。 管理同一资源的不同shared_ptr对象能在不同线程中 ...
注意,不能将一个原始指针直接赋值给一个智能指针,如下所示,原因是一个是类,一个是指针。 reset()包含两个 ...