RAII(ResourceAcquisitionIsInitialization):资源分配即初始化,定义封装一个类,用来实现调用构造函数时就可完成资源的分配和初始化,在调用析构函数就可完成资源的清理,以实现对资源的初始化和清理。智能指针:用自动化或者说智能的指针来实现对动态内存的释放。它是一个类..
分类:
编程语言 时间:
2016-03-21 02:07:36
阅读次数:
509
auto_ptr作为最早的智能指针,可以实现以RAII手法管理堆区对象,但它设计的本意只是简单的利用C++对于栈区对象的自动析构管理堆区对象, 并不像shared_ptr那样包含引用计数,可以在每次拷贝的时候多出一个“分身”。这时候,拷贝的语义就成了很大的问题(按理说直接禁掉可能好好些), 于是就出
分类:
编程语言 时间:
2016-02-28 15:12:29
阅读次数:
169
Boost智能指针——scoped_ptrboost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。boost::scoped_ptr的实现和std::auto_ptr非常类似,都是利用了一个栈上的对象去管理一个堆上的对象,...
分类:
其他好文 时间:
2015-12-20 20:55:10
阅读次数:
143
很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码。本文阐述了如何正确运用auto_ptr来让你的代码更加安全——以及如何避免对auto_ptr危险但常见的误用,这些误用...
分类:
其他好文 时间:
2015-12-16 18:52:06
阅读次数:
162
1. 智能指针(如标准库的auto_ptr,shared_ptr,weak_ptr,boost的scoped_ptr等)主要用于动态内存的管理,同时提供给用户与内置指针一样的使用方法,本条款主要涉及智能指针在构造与析构,复制和赋值,解引等方面的注意点,而非智能指针的实现细节.2. 智能指针的构造,赋...
分类:
编程语言 时间:
2015-10-06 23:38:32
阅读次数:
391
(一)在一项条款说法auto_ptr和tr1::share_ptr适合heap-based资源。然而,并非所有的资源都heap-based的。换句话说不tr1::shared_ptr 和 auto_ptr 总是适合作为资源管理器。管理类型。如果Mutex类型通过lock和unlock两组函数进行相互...
分类:
编程语言 时间:
2015-09-19 19:31:49
阅读次数:
280
auto_ptr auto_ptr是当前C++标准库中提供的一种智能指针。 auto_ptr在构造时获取某个对象的所有去(ownership),在析构时释放该对象。我们可以这样使用auto_ptr来提高代码安全性:int* p = new int(0);auto_ptr ap(p); 从此我们...
分类:
编程语言 时间:
2015-09-18 17:58:39
阅读次数:
183
前奏:Garbage Collection 技术一直颇受注目,并且在 Java 中已经发展成熟,成为内存管理的一大利器,但它在 C++ 语言中的发展却不顺利,C++ 为了追求运行速度,20 年来态度坚决地将其排除在标准之外。为了稍许平复因为没有 Garbage Collection 而引发的 C++...
分类:
其他好文 时间:
2015-09-13 17:10:17
阅读次数:
179
简单介绍内存管理一直是 C++ 一个比較繁琐的问题,而智能指针却能够非常好的解决问题,在初始化时就已经预定了删除。排解了后顾之忧。1998年修订的第一版C++标准仅仅提供了一种智能指针:std::auto_ptr(现以废弃),它基本上就像是个普通的指针:通过地址来訪问一个动态分配的对象。std::a...
分类:
其他好文 时间:
2015-09-13 14:31:07
阅读次数:
206
1. "智能指针"是行为像指针的对象,但它们能提供指针没有的功能:shared_ptr,weak_ptr,auto_ptr(见条款13)实现对堆内存的自动管理,STL的迭代器实现对整个容器的遍历等. 真正的指针的优势在于支持继承层次中派生类指针向基类指针的转换(当然标准库shared_ptr,we....
分类:
编程语言 时间:
2015-09-11 20:54:12
阅读次数:
206