码迷,mamicode.com
首页 > 编程语言 > 详细

实战c++中的智能指针unique_ptr系列-- 使用std::unique_ptr代替new operator(错误:‘unique_ptr’ is not a member of ‘std’)

时间:2015-12-24 23:56:43      阅读:432      评论:0      收藏:0      [点我收藏+]

标签:

写了很多篇关于vector的博客,其实vector很便捷,也很简单。但是很多易错的问题都是vector中的元素为智能指针所引起的。所以决定开始写一写关于智能指针的故事,尤其是unique_ptr指针的故事。

这是个开始,就让我们使用std::unique_ptr代替new operator吧!

还是用程序说话:

#include<iostream>
int main()
{
    while (true)
        int *x = new int;
}

看下任务管理器中的内存:
技术分享

此时使用智能指针unique_ptr:

#include<iostream>
#include<memory>
int main()
{
    while (true)
        std::unique_ptr<int> x(new int(10));
}

技术分享

两张图片就可以清晰看到智能指针带来的好处。

如果我们对传统的指针及时的释放,我们也可以达到智能指针的效果:

#include <iostream>
using namespace std;
int main() {
    while (true) {
        int *x = new int;
        delete x;
    }
    return 0;
}

技术分享

这里再分享一个错误,在MAC编辑器上写的C++代码,其中用到了智能指针unique_ptr,这个代码在vs2015中时候的时候,就会提示错误:
‘unique_ptr’ is not a member of ‘std’

原因很简单,就是缺少unique_ptr的头文件:

#include<memory>

那么你也许会问题,智能指针是何时释放内存的呢?
unique_ptr objects automatically delete the object they manage (using a deleter) as soon as they themselves are destroyed, or as soon as their value changes either by an assignment operation or by an explicit call to unique_ptr::reset.

下一篇会从unique_ptr的构造函数说起!!

实战c++中的智能指针unique_ptr系列-- 使用std::unique_ptr代替new operator(错误:‘unique_ptr’ is not a member of ‘std’)

标签:

原文地址:http://blog.csdn.net/wangshubo1989/article/details/50397066

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!