zoukankan      html  css  js  c++  java
  • Vector的new与delete问题

    先看一段代码:

    struct     A;      
      vector<A>     A_vect(5);      
      for(int     i     =     0;     i     <     5;     i++)      
      {      
                    A*     pA     =     new     A;      
                    A_vect.pushback(*pA);      
      }    
      vector<A>::iterator     it_A     =     A_vect.end()-1;      
      for(;     it_A     !=     A_vect.begin();     it_A--)      
      {      
                    A_vect.popback(     );      
      }  

    上面的代码肯定产生内存泄露,new和delete对称使用,特别是使用的位置.你外面new,就不要指望它内部delete,new和delete永不分离。

          vector::push_back会调用元素的copy   constructor,也就是说,你放进vector的那一个,不是你new的那一个。注意这时候还要定义元素的copy   constructor,不然也不对哦。

    vector可以帮助你自动构造和析构,但是,自己分配和构造的对象必须自己析构和释放。

  • 相关阅读:
    896. 单调数列
    819. 最常见的单词
    collections.Counter()
    257. 二叉树的所有路径
    万里长征,始于足下——菜鸟程序员的学习总结(三)
    Ogre启动过程&原理
    Ogre导入模型
    四元数
    Ogre3D嵌入Qt框架
    如何搭建本地SVN服务
  • 原文地址:https://www.cnblogs.com/buffer/p/1279035.html
Copyright © 2011-2022 走看看