内存管理一直是令C++程序员最头疼的工作,C++继承了C那高效而又灵活的指针,使用起来稍微不小心就会导致内存泄露、野指针、越界访问等访问。虽然C++标准提供了只能指针std::auto_ptr,但是并没有解决所有问题。boost的smart_ptr库是对C++98标准的绝佳补充。它提供了六种智能.....
分类:
其他好文 时间:
2014-08-09 18:41:18
阅读次数:
386
当你拷贝一个auto_ptr时,它所指向的对象的所有权被移交到拷入的auto_ptr上,而它自身被置为NULL。我的理解是:拷贝一个auto_ptr意味着改变它的值。例如:
auto_ptr pint1(new int);//pint1指向一个int
auto_ptr pint2(pint1);//pint2指向pint1的int;pint1被置为NULL
pint1...
分类:
其他好文 时间:
2014-08-07 00:48:57
阅读次数:
208
概述:C++中有很多种智能指针,auto_ptr就是其中的一种,该智能指针主要是为了解决“因程序异常退出发生的内存泄漏”这类问题的。
我们先来看下面的问题代码
#include
#include
#include
using namespace std;
//一般指针的处理方式
template
class OldClass
{
public:
OldClass(T a)
{
ptr...
分类:
其他好文 时间:
2014-08-06 22:59:32
阅读次数:
326
C++ 98的 std::auto_ptr已经被彻底遗弃了,取而代之的是unique_ptr、shared_ptr与weak_ptr。大部分时候我们自己手动申请内存方式内存都是没有问题的,问题是如果程序很大了之后,一个复杂的对象,多次拷贝的代价非常高,很多地方都会使用到,只存在一份拷贝显然是最好的,...
分类:
编程语言 时间:
2014-08-01 13:27:51
阅读次数:
384
《C++ Primer Plus》学习笔记10
第16章 string类和标准模板库
主要内容:
1)标准的C++string类
2)auto_ptr模板
3)标准模板库(STL)
4)容器类
5)迭代器
6)函数对象
7)STL算法
1、string类
1)构造字符串
//初始化为常规的C-风格的字符串
string one ("Lottery Winner!...
分类:
编程语言 时间:
2014-07-24 10:35:46
阅读次数:
465
初始化:1 #include //auto_ptr header2 void f()3 {4 auto_ptr ptr(new classA);5 }拷贝:1 //auto_ptr can't be initialized by = operator2 auto_ptr ptr1(new cla.....
分类:
其他好文 时间:
2014-07-22 22:47:14
阅读次数:
198
实际上auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,使用它不必每次都手动调用delete去释放内存。当然有利也有弊,也不是完全完美的。
本文从下面的8个方面来总结auto_ptr使用的大部分内容。
1. auto_ptr是什么?
auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,...
分类:
编程语言 时间:
2014-07-21 22:22:38
阅读次数:
276
测试环境:win7, vs2012如果未安装boost,请参考:http://blog.csdn.net/alex_my/article/details/17630685涉及智能指针:shared_ptr, weak_ptr, scoped_ptr, auto_ptr其它:enable_shared...
分类:
编程语言 时间:
2014-07-19 14:15:45
阅读次数:
276
这里先介绍auto_ptr的缺陷:
因为auto_ptr并不是完美无缺的,它的确很方便,但也有缺陷,在使用时要注意避免。首先,不要将auto_ptr对象作为STL容器的元素。C++标准明确禁止这样做,否则可能会碰到不可预见的结果
auto_ptr的另一个缺陷是将数组作为auto_ptr的参数: auto_ptr pstr (new char[12] ); //数组;为定义
然后释放资源...
分类:
编程语言 时间:
2014-07-08 14:38:50
阅读次数:
240
shared_ptr是一个引用计数智能指针,用于共享对象的所有权。它可以从一个裸指针、另一个shared_ptr、一个auto_ptr、或者一个weak_ptr构造。还可以传递第二个参数给shared_ptr的构造函数,它被称为删除器(deleter)。删除器用于处理共享资源的释放,这对于管理那些不是用new分配也不是用delete释放的资源时非常有用。shared_ptr被创建后,就可以像普通指...
分类:
编程语言 时间:
2014-07-08 13:26:57
阅读次数:
191