社区
C++ 语言
帖子详情
auto_ptr为什么能在退出作用塔的时候
Jenf_Mu
2012-10-11 05:21:53
int main(int argc, char *argv[])
{
vector<auto_ptr<AAA> > vt;
for (int i=0;i<10;i++)
{
vt.push_back(auto_ptr<AAA>(new AAA(i)));
}
vt[0]->Print();
return 0;
}
...全文
44
6
打赏
收藏
auto_ptr为什么能在退出作用塔的时候
int main(int argc, char *argv[]) { vector<auto_ptr > vt; for (int i=0;i<10;i++) { vt.push_back(auto_ptr(new AAA(i))); } vt[0]->Print(); return 0; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oN5GrzoN
2012-10-11
打赏
举报
回复
跟踪源码 复制给vector的时候,它里边包含的指针变成了0,而把有东西的指针给了vector里面那个元素。所以它析构的时候delete的是0
Jenf_Mu
2012-10-11
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
由于所有权(ownership)转移的问题,auto_ptr不能作为容器的元素. 换用其它的smart pointer吧, 比如boost::shared_ptr
[/Quote]
我现在只想知道为什么超出作用域没有析构,不用考虑所有权的问题,而且shared_ptr 8字节,我用auto_ptr 4字节就行了。
mujiok2003
2012-10-11
打赏
举报
回复
由于所有权(ownership)转移的问题,auto_ptr不能作为容器的元素. 换用其它的smart pointer吧, 比如boost::shared_ptr
mujiok2003
2012-10-11
打赏
举报
回复
由于所有权(ownership)转移的问题,auto_ptr不能作为容器的元素. 换用其它的smart pointer吧, 比如boost::shared_ptr
Jenf_Mu
2012-10-11
打赏
举报
回复
也没有引用计数之类的东西
Jenf_Mu
2012-10-11
打赏
举报
回复
不小心按了回车,就发了问题,问题应该是
auto_ptr为什么能在退出作用域的时候,不调用析构函数,delete掉包含的指针
源码如下
~auto_ptr()
{ // destroy the object
delete _Myptr;
}
vt.push_back(auto_ptr<AAA>(new AAA(i)))
这里生成一个临时的auto_ptr<AAA>,应该过了这句话就析构了啊,为什么在程序的最后才析构的。
C++系列第2:C++2.0(11+14+17+20)详解及多线程实战
90 5.5.1 RAII 与引用计数 90 5.5.2 std::shared_
ptr
90 5.5.3 std::unique_
ptr
91 5.5.4 std::weak_
ptr
91 第6章 C++2.0多线程原理与实战 93 什么是并发 93 并发的方式 93 为什么使用并发 95 线程简介 96 创建线程...
C++_
auto
_
ptr
与unique_
ptr
智能指针
目录 1
auto
_
ptr
与unique_
ptr
...4.2 unique_
ptr
可以用在函数返回值中 4.3 unique_
ptr
可做为容器元素 5 示例 1
auto
_
ptr
与unique_
ptr
auto
_
ptr
是用于C++11之前的智能指针。由于
auto
_
ptr
基于排他所有权模式:两
auto
_
ptr
与 shared_
ptr
用法和区别总结
*
auto
_
ptr
在头文件<memory>中。 永不建立
auto
_
ptr
的容器 关于此可以看的Effective STL的条款8 因为
auto
_
ptr
并不是完美无缺的,它的确很方便,但也有缺陷,在使用时要注意避免。 首先,不要将
auto
_
ptr
对象...
auto
_
ptr
使用详解
auto
_
ptr
...智能指针(
auto
_
ptr
) 这个名字听起来很酷是不是?其实
auto
_
ptr
只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限。本文总结的8个问题足以...
auto
_
ptr
是什么? aut...
智能指针
auto
_
ptr
如果
auto
_
ptr
以传值的方式被当作一个参数传递给某函数,此时被调用端的参数获得了这个
auto
_
ptr
的拥有权,如果函数不再将它传递出去,它所指的对象就会在函数
退出
时被删除。一个
auto
_
ptr
不能指向另一个
auto
_
ptr
所拥有...
C++ 语言
64,651
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章