VC c++中auto_ptr的转移问题

原创 2007年10月10日 09:15:00
测试代码:
auto_ptr <int > ap(new int(1));
auto_ptr <int > ap2;
ap2=ap;
cout  < < *ap2  < < ","  < < *ap  < < endl;

竟然都是1,说明没有转移啊。看了memory关于auto_ptr的赋值函数定义是这样的:
auto_ptr <_Ty >& operator=(const auto_ptr <_Ty >& _Y) _THROW0()
{if (this != &_Y)
{if (_Ptr != _Y.get())
{if (_Owns)
delete _Ptr;
_Owns = _Y._Owns; }
else if (_Y._Owns)
_Owns = true;
_Ptr = _Y.release(); }
return (*this); }
仅仅当指向不同对象的时候,才删除本auto_ptr的指针,然后赋值为另外的auto_ptr的指针。但是release方法的定义是:
_Ty *release() const _THROW0()
{((auto_ptr <_Ty > *)this)- >_Owns = false;
return (_Ptr); }
他不会删除指针,而是修改一个bool值为false。这个和标准库文档介绍的不同啊。没有实现转移,只是拷贝过去,修改一个bool值。这个难道是微软自己的实现? 

智能指针auto_ptr详解

1. 智能指针auto_ptr的引入 auto_ptr是C++标准库中的智能指针模板类,头文件 auto_ptr的出现,主要是为了解决“有异常抛出时发生内存泄漏”的问题。如下的简单代码是这类问题的...
  • u010984552
  • u010984552
  • 2016年10月25日 09:08
  • 616

我所熟悉的C++智能指针auto_ptr vs shared_ptr (一)

在开发过程中,曾经使用过两种C++的智能指针,如今,便总结一下,顺便比较比较二者使用中的区别,注意避免入坑的危险。:-D 我们知道,在C++中,如果创建一个指向某个对象的指针,那么在使用完这个对象...
  • u013700658
  • u013700658
  • 2015年10月28日 09:24
  • 1462

auto_ptr 与 shared_ptr 用法和区别总结

1.auto_ptr 被复制后,将失去原来所致资源的所有权;
  • Manketon
  • Manketon
  • 2014年07月08日 12:29
  • 2015

C++智能指针auto_ptr详解

auto_ptrauto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在...
  • gatieme
  • gatieme
  • 2016年03月20日 23:37
  • 2417

C++可怜的内存管理机制漫谈及奇怪补救auto_ptr介绍

http://blog.csdn.net/vagrxie/article/details/1821091  C++可怜的内存管理机制漫谈及奇怪补救auto_ptr介绍 分类: 【C...
  • wangyin159
  • wangyin159
  • 2015年06月22日 10:21
  • 317

浅谈auto_ptr智能指针

在c++标准库里主要有三个智能指针: ①auto_ptr 在任何情况下都不要使用 ②scoped_ptr 独占空间,防拷贝和赋值,是对第①个智能指针的缺陷所作出的解决 ③shared_ptr 利用...
  • qq_34992845
  • qq_34992845
  • 2017年04月02日 00:20
  • 825

实现auto_ptr的两种方法

我们都知道,实现auto_ptr有两种方法:第一种方法:在上一篇博客中我已经实现了,主要思想是管理权转移。第二种方法:它是我们c++标准库中以前的一个版本,主要思想是在auto_ptr类中除了有一个指...
  • xyzbaihaiping
  • xyzbaihaiping
  • 2016年04月11日 20:04
  • 1144

STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr

STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr 本文主要介绍了 auto_ptr的使用及其源码。 auto_ptr是STL中的智能指针家族的成员之一, ...
  • yanglingwell
  • yanglingwell
  • 2017年02月20日 12:22
  • 11062

从零开始学C++之对象的使用(三):static 与单例模式、auto_ptr与单例模式、const 用法小结、mutable修饰符

一、static 与单例模式 单例模式也就是简单的一种设计模式,它需要: 保证一个类只有一个实例,并提供一个全局访问点 禁止拷贝  C++ Code  1 2 3 4 5 6 7 8...
  • Simba888888
  • Simba888888
  • 2013年07月09日 16:24
  • 4483

智能指针auto_ptr、内存泄漏解决

在C++11中,已经不使用auto_ptr,而用 unique_ptr进行替代,不过二者原理都差不多。头文件:memory智能指针:实质上是一个类,在创建智能指针的时候,本质上是在栈上创建了一个对象...
  • wang664626482
  • wang664626482
  • 2016年08月29日 20:02
  • 741
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC c++中auto_ptr的转移问题
举报原因:
原因补充:

(最多只允许输入30个字)