美文网首页
坑收集(cpp)

坑收集(cpp)

作者: _伦_ | 来源:发表于2019-03-17 18:30 被阅读0次

    1、使用容器加智能指针的一个坑:

    假设有两个容器声明如下:

    map<int, shared_ptr<set<int> > > earthMap;

    list<shared_ptr<set<int> > > nearByEarths;

    某个时候,我要把容器earthMap的东西删掉,放到nearByEarths中,然后写下了下面的语句:

    earthMap.erase(posInt(i - 1, j)); ---(1-1)

    nearByEarths.push_back(earthMap[posInt(i - 1, j)]); ---(1-2)

    过了一会,需要遍历nearByEarths的内容,发现报错。

    问题应该是这样的,在1-1中,由于容器已经把最后一个指向某个对象的shared_ptr销毁了,因此这个对象也随之被销毁。因此后面访问就会出错。

    但是还有个问题,为什么1-2不会报错呢?这个留待后续思考

    相关文章

      网友评论

          本文标题:坑收集(cpp)

          本文链接:https://www.haomeiwen.com/subject/mfaumqtx.html