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值。这个难道是微软自己的实现? 

C++ 内存问题 auto_ptr

c/c++内存使用内存问题 野指针 一些内存已经被释放了,之前指向它的指针仍然在被利用。这些内存有可能在运行时被系统重新分配给其他程序使用,从而导致无法预测的错误 重复释放 释放已经释放了的内存,或者...
  • qq_26437925
  • qq_26437925
  • 2016年12月19日 12:52
  • 339

auto_ptr使用总结

 (1) auto_ptr的意义 auto_ptr是一种智能指针,当系统异常退出的时候避免资源泄漏(内存)。 其他的资源还对应其他的智能指针。 (2) auto_ptr的使用 std::...
  • wangwenwen
  • wangwenwen
  • 2014年11月24日 15:14
  • 808

c++中的智能指针auto_ptr解析

c++中的auto_ptr是一个类,却可以像指针一样去使用。使用auto_ptr需要包含头文件#include 例如:auto_ptr ps(new string("hello"));可以像指针一样...
  • uestclr
  • uestclr
  • 2016年05月06日 10:56
  • 2027

C++中智能指针std::auto_ptr的用法详解

C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。...
  • xiaoluer
  • xiaoluer
  • 2017年02月09日 15:23
  • 1106

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

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

stl中auto_ptr,unique_ptr,shared_ptr,weak_ptr四种智能指针使用总结

在一次面试过程中被问到了stl中的四种智能指针的用法 由于经验不足,我只知道auto_ptr和shared_ptr,然后还说了一个弱...    然后面试官就提示是weak_ptr,之后他又主动说出...
  • zsc_976529378
  • zsc_976529378
  • 2016年08月19日 14:25
  • 2359

auto_ptr 与 shared_ptr 用法和区别总结

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

C++11 智能指针——(C++98)auto_ptr

auto_ptr是严格的拥有权类智能指针,使用时注意以下几点 绝对不应使用一个原始指针来初始化2个或2个以上的auto_ptr对象 auto_ptr对象通过赋值或构造转移拥有权,一旦...
  • wssjlrw
  • wssjlrw
  • 2016年03月05日 13:39
  • 685

C++智能指针auto_ptr详解

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

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

STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr 本文主要介绍了 auto_ptr的使用及其源码。 auto_ptr是STL中的智能指针家族的成员之一, ...
  • yanglingwell
  • yanglingwell
  • 2017年02月20日 12:22
  • 11481
收藏助手
不良信息举报
您举报文章:VC c++中auto_ptr的转移问题
举报原因:
原因补充:

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