C++,学习shared_ptr智能指针存在几个大的疑惑,希望有高手能帮忙解答一下

1.智能指针怎么去舒适化一个vector?我试了一下,只能用shared_ptr<vector<int>>=make_shared<vector<int>>(10,1),... 1.智能指针怎么去舒适化一个vector?我试了一下,只能用shared_ptr<vector<int>> = make_shared<vector<int>>(10,1),结果是10个1,但是不知道怎么初始化成1,2,3,4,5,6,7,8,9这样
2.智能指针是不是一定是局部变量?能不能确保一定在离开作用区域的时候删除内存空间?
3.有一个指针指向的内存空间和一个智能指针一样的时候,智能指针自动销毁的时候那个指针还存在吗?
4.我在书上看到一个不用delete去销毁内存空间
列子是connection c = connect(&d);
shared_ptr<connection> p(&c,end_connection);
其中connectiong等是定义的类型,end_connection是一个函数
函数作用是关闭,就和删除空间一样。
为什么智能指针还可以那样子定义?为什么不直接开头定义成智能指针,让他自己去销毁内存?
展开
 我来答
cqdjyy01234
推荐于2016-12-01 · TA获得超过1147个赞
知道小有建树答主
回答量:267
采纳率:50%
帮助的人:305万
展开全部
  1. typedef vector<int> vector_int;
    vector_int *tmp = new vector_int;
    给tmp赋值
    shared_ptr<vector_int> pointer(tmp);

  2. 不一定。能保证。

  3. 看情况。类似1的情况,则pointer销毁时,tmp指向的对象被销毁。

  4. 你给的例子相当于用end_connection替换了delete。因为智能指针不只可以用过来管理内存,也可以管理其它资源。管理其它资源的时候,就应该用相应的操作替换new和delete。

栀暖棠深x
2014-07-23 · TA获得超过296个赞
知道小有建树答主
回答量:357
采纳率:0%
帮助的人:127万
展开全部
所谓的智能指针。。的智能方面就是使用完自动删除掉内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式