1、简介  COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,在AddRef和Release中间的函数可能抛出异常,此时就没有执行到Release了。CC
转载 6月前
84阅读
注意:shared_ptr作为参数【函数参数、线程参数】时,不管是不是引用传递,都是拷贝复制,所以它们的计数器是同一个,所以计数+1
转载 2019-06-26 17:51:00
164阅读
2评论
一、 原理 :RAII 资源获取即初始化技术原理:接受一个申请好的内存地址,
原创 2022-11-07 19:10:34
104阅读
shared_ptr基础 智能指针是存储动态分配对象指针的类,用于生命周期的控制。当指针离开其作用域时,自动销毁动态分配的空间,防止内存泄漏。使用智能指针需要包含头文件#include<memory> std::shared_ptr采用引用计数,每一个shared_ptr的拷贝都指向相同的内容,当最 ...
转载 2021-11-04 14:41:00
164阅读
2评论
shared_ptr是一个最像指针的"智能指针",是boost.smart_ptr库中最有价值、最重要的组成部分,也是最有用的,Boost库的
转载 2022-12-07 00:25:08
89阅读
shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting)。​一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。当有一个新的shared_ptr指向对象时,对象的强引用计数就会+1当有一个shared_ptr销毁时,比如作
原创 2022-11-29 15:42:53
63阅读
shared_ptr #include<memory> 要确保用 new 动态分配的内存空间在程序的各条执行路径都能被释放是一件麻烦的事情。C++ 11 模板库的 头文件中定义的智能指针,即 shared _ptr 模板,就是用来部分解决这个问题的。 只要将 new 运算符返回的指针 p 交给一个 ...
转载 2021-10-21 10:45:00
56阅读
2评论
boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法: #include <string>#include <iostream>#include
转载 2008-09-19 23:23:00
85阅读
2评论
boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include<string>#include<iostream>#include<boost/share
转载 精选 2016-09-01 20:00:45
464阅读
近期正在进行《Effective C++》的第二遍阅读,书里面多个条款涉及到了shared_ptr智能指针,介绍的太分散,学习起来麻烦。写篇blog整理一下。LinJM @HQUshared_ptr是一个智能指针。在C++ 11颁布之前,它包括在TR1(Technical Report 1)其中,...
转载 2015-12-30 14:12:00
182阅读
2评论
最近接触智能指针比较多,对智能指针的使用做下基本的总结。 shared_ptr 是C++11提供的一种智能指针类,本质上是一个类,具有构造函数和析构函数,于是能够自动释放没有指针引用的资源。 其核心实现便是计数。 每个 shared_ptr 对象在内部指向两个内存位置:1、指向对象的指针。2、用于控
原创 2021-08-02 16:45:44
1181阅读
前几天有个人问了我一个问题: 如何将一个智能指针作为函数的返回值传递出来。当时这个问题一下子把我问倒
转载 2022-12-07 00:18:41
201阅读
都是这周看书以及代码的总结:        Stl  中 auto_ptr只是众多可能的智能指针之一,auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。     这里是一个简单的代码示例,如果没有auto_ptr,       &
转载 2023-01-09 12:52:57
96阅读
原文链接:https://www.cnblogs.com/jiayayao/archive/2016/12/03/6128877.html 为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer)。 智能指针的原理是,接受一个申请好的内存地址,构造一个保存在栈上的智能指针
转载 2017-12-05 10:43:00
90阅读
2评论
#include <iostream>#include <string>#include <vector>#include <memory> using namespace std; class Person{ public: string name; shared_ptr<Person> moth
转载 2019-05-31 15:10:00
38阅读
2评论
前几天有个人问了我一个问题: 如何将一个智能指针作为函数的返回值传递出来。当时这个问题一下子把我问倒了,后来经人提醒有一个叫shared_ptr智能指针可以解决这个问题。将shared_ptr作为函数返回值的代码是这样的:#include #include using std::tr1::shared_ptr;shared_ptrint> ReturnSharedPtr(
转载 2021-07-14 11:30:33
392阅读
       Stl  中 auto_ptr只是众多可能的智能指针之一,auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。     这里是一个简单的代码示例,如果没有auto_ptr,        &nbsp
转载 精选 2011-06-07 18:18:25
558阅读
Q: 那个auto_ptr是什么东东啊?为什么没有auto_array?A: 哦,auto_ptr是一个很简单的资源封装类,是在头文件中定义的。它使用“资源分配即初始化”技术来保证资源在发生异常时也能被安全释放(“exception safety”)。一个auto_ptr封装了一个指针,也可以被当作...
转载 2014-08-13 23:28:00
53阅读
2评论
前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元...
转载 2014-09-24 09:58:00
71阅读
2评论
转载:http://blog.sina.com.cn/s/blog_508938e10100f12x.html auto_ptr 类可以用于管理由 new 分配的单个对象,但是无法管理动态分配的数组(我们通常不会使用数组,而是使用 vector 代替数组)。auto_ptr 在拷贝和赋值的时候有不寻常的行为,因此 auto_ptrs 不能被保存在 stl 的容器中。当 auto_ptr 离开了自
转载 精选 2009-11-10 20:47:40
5434阅读
1点赞
1评论
  • 1
  • 2
  • 3
  • 4
  • 5