在c++98中,智能指针通过一个模板“auto_ptr”来实现,auto_ptr以对象的方式来管理堆分配的内存,在适当的时间(比如析构),释放所获得的内存。这种内存管理的方式只需要程序员将new操作返回的指针作为auto_ptr的初始值即可,程序员不能显式的调用delete。如 auto_ptr(n ...
分类:
编程语言 时间:
2016-06-01 19:50:55
阅读次数:
184
在代码里面看到了auto_ptr这个东西,正好以前一哥们曾经问过我这个问题..所以特意去搜了搜帖子,学习学习 http://www.cnblogs.com/gaoxianzhi/p/4451803.html 头文件 : #include <memory> 使用 : std::auto_ptr 作用 ...
分类:
编程语言 时间:
2016-06-01 06:44:16
阅读次数:
254
??
shared_ptr是包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确的删除,它实现的是引用计数型的智能指针,可以被自由的拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0时)它时才可以被删除。
??
shared_ptr可以被安全的放到标准容器中,并弥补了auto_ptr因为转移语义而不能把指针作为STL容器元素的缺陷。
...
分类:
其他好文 时间:
2016-05-18 18:44:57
阅读次数:
328
C/C++——跟我重写智能指针auto_ptr模版类...
分类:
编程语言 时间:
2016-05-12 15:18:47
阅读次数:
192
用于大型程序的工具
--异常处理[续3]
九、auto_ptr类[接上]
5、auto_ptr对象的复制和赋值是破坏性操作
auto_ptr和内置指针对待复制和赋值有非常关键的区别。当复制auto_ptr对象或者将它的值赋给其他auto_ptr对象的时候,将基础对象的所有权从原来的auto_ptr对象转给副本,原来的auto_ptr对象重置为未绑定状态。...
分类:
编程语言 时间:
2016-05-12 14:58:54
阅读次数:
147
因为设备限制,我现在windows下进行测试,以下代码全部都在vs2013中运行过
下面是例子1:
#include
#include
#include
#include
using namespace std;
class D
{
public:
D() : d(1) {}
~D() { printf("D destruction\n"); }
int d;
};
v...
分类:
其他好文 时间:
2016-05-12 12:09:48
阅读次数:
203
c++中的auto_ptr是一个类,却可以像指针一样去使用。使用auto_ptr需要包含头文件#include
例如:auto_ptr ps(new string("hello"));可以像指针一样去使用它,cout size()
引例:
#include
#include
using namespace std;
class A{
public:
A(int x = 0) :m_...
分类:
编程语言 时间:
2016-05-06 12:13:39
阅读次数:
239
资源管理
所谓资源就是,一旦使用了它,将来必须归还给系统!C++最常见的资源就是动态分配内存,如果不归还就会内存泄露。
1. 以对象管理资源
我们通常希望有一个对象来帮助我们解决资源管理的问题(自动调用析构函数),于是此章我们讨论auto_ptr和shared_ptr。
问题产生假设我们希望使用一个工厂方法如:class investment {...}; // 代表一个root clas...
分类:
编程语言 时间:
2016-04-29 17:03:29
阅读次数:
262
C++:浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析标签:STL 智能指针 auto_ptr 源码分析by 小威威1. 知识引入在C++编程中,动态分配的内存在使用完毕之后一般都要delete(释放),否则就会造成内存泄漏,导致不必要的后果。虽然大多数初学者都会有这样的意识,但是有些却不以为意。我曾问我的同学关于动态内存的分配与释放,他的回答是:”只要保证new和delete...
分类:
编程语言 时间:
2016-04-28 01:55:46
阅读次数:
283
C++ 智能指针详解
一、简介
由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr...
分类:
其他好文 时间:
2016-04-22 19:53:53
阅读次数:
158