智能指针是行为类似于指针的类对象,但这种对象还有其他功能。 本节介绍三个可帮助管理动态内存分配的智能指针模板(auto_ptr、unique_ptr和shared_ptr)。 void remodel(std:string & str) { std::string * ps = new std::s ...
分类:
编程语言 时间:
2019-03-08 00:28:48
阅读次数:
222
通过对VC版本的auto_ptr的源代码得知VC版本还有一点小缺陷,又对VS版本的auto_ptr做了一些剖析,具体代码和注释如下: 测试代码: 运行结果: 101020 ...
分类:
其他好文 时间:
2019-02-23 01:07:41
阅读次数:
197
auto_ptr包含于头文件 #include<memory> 其中<vector><string>这些库中也存有。auto_ptr 能够方便的管理单个堆内存对象,在你不用的时候自动帮你释放内存。 auto_ptr的设计目的: 局部对象获取的资源(内存),当函数退出时,它们的析构函数被调用,从而自动 ...
分类:
其他好文 时间:
2019-02-22 23:27:32
阅读次数:
266
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,S ...
分类:
其他好文 时间:
2019-02-01 14:10:35
阅读次数:
227
条目八《永不建立auto_ptr的容器》 重要的事说三次,永不建立auto_ptr的容器,永不建立auto_ptr的容器,永不建立auto_ptr的容器!!! 为什么? 实质是 指针在转移时把原本的指针置为NULL,然而在STL容器中的一些操作是包含数据转移操作的。 比如 排序sort() ,在ST ...
分类:
其他好文 时间:
2018-12-26 00:29:50
阅读次数:
125
资源管理 所谓资源就是,一旦用了它,将来必须还给系统. 13.以对象管理资源 为防止资源泄露,请使用RAII对象,他们在构造函数中获得资源并在析构函数中释放资源. 两个常被使用的RAII classes 对象分别是trl::shared_ptr和auto_ptr.前者通常是较佳选择,因为其copy行 ...
分类:
其他好文 时间:
2018-12-22 16:44:37
阅读次数:
228
c++11标准和boost都提供了智能指针的功能。智能指针是普通指针的封装,智能指针是一个对象,对象里面包含了原生指针。可以使用智能指针对象的get()方法可获得封装在里面的原生指针。使用智能指针管理内存,用到智能指针的地方需要统一使用c++11或boost库,切忌混合使用。c++11的智能指针包含 ...
分类:
其他好文 时间:
2018-10-30 14:48:03
阅读次数:
123
头文件:#inlcude<memory> 智能指针类型: auto_ptr (C++98)弃用 shared_ptr, unique_ptr ,weak_ptr (C++11) 指针的初始化函数:make_shared(C++11),make_unique (C++14),返回bool 以上均位于n ...
分类:
编程语言 时间:
2018-10-29 02:01:16
阅读次数:
293
本文参考 "C++智能指针简单剖析" 内存泄露 我们知道一个对象(变量)的生命周期结束的时候, 会自动释放掉其占用的内存(例如局部变量在包含它的第一个括号结束的时候自动释放掉内存) 这样会编译错误. 但是如果这样写呢? 程序结束的时候会自动释放 的内存, 但是由 算符创建的匿名变量却一直留在内存中, ...
分类:
编程语言 时间:
2018-10-22 20:49:54
阅读次数:
155
本文介绍c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用。 为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delet ...
分类:
编程语言 时间:
2018-10-04 10:23:51
阅读次数:
213