繁体   English   中英

C ++中的指针,重分配和向量

[英]pointers,deallocation and vector in c++

我想知道我是否应该通过myvector.erase()显式取消分配从向量中删除的指针;

例如;

Class Sample1{
   public:
         removeSample2(Sample2 * a)
         {
             if(// if i find that a is in my sampleList1 vector with index i ){
                   // should i call here delete or something like that for a pointer ?
                   sampleList1.erase(sampleList1.begin()+i);
              }
         }

   private:
      vector<Int *> sampleList1;

            } 

Class Sample2{
     public:
           // not important areas
     private:
          Sample1 * example;
             } 

我们可能无法知道,因为我们不知道您要做什么。 但是基本的答案是:

  1. 如果集合在逻辑上拥有其中的东西,则说明您做错了所有事情。 切勿为此目的使用普通指针的普通集合。 例如,如果您复制收藏集,事情将会变得非常糟糕。 (可以使用普通的智能指针集合,也可以使用专门设计用于保存指针并管理其中对象寿命的集合。)

  2. 如果集合不拥有其中的所有内容,则不要从集合中delete指针。 这将导致其他使用这些指针的代码在删除对象后访问该对象。

您应该自己删除该元素。 向量没有分配该元素,因此不会释放它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM