首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个内存释放有关问题~

2012-03-06 
问一个内存释放问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!structaa{intbbvectorchar*cc}classtest{p

问一个内存释放问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
struct   aa
{
    int   bb;
    vector   <char*>   cc;
};

class   test
{
private:
        aa   *staa;
public:
    ~test();
    init   ()
    {
          for   (int   i   =0;   i <5;i++)
        {
          char   *ss   =   new   char[28];                   !@!
          memset   (ss,   0,   28);
          strcpy   (ss, "dddd ");
          staa-> cc.push_back   (ss)
        }
    }
};

void   main
{
      test   t;
      t.init   ();
      t.~test();         //请问我改怎么写这个析构function来是放!@!处new的内存.单独delete   staa;   staa   =   NULL   行吗?
}

[解决办法]
那,你既然vector都用了,为啥不用string取代char *?
[解决办法]
一定要写在析构里吗? 自己再做个接口嘛 里面只写delete[]staa就可以了吧
[解决办法]
你的vector中保存了这个指针,析构的时候遍历vector,移除各个元素的同时进行delete


[解决办法]
还要记得让 staa = NULL; 不然容易犯错
[解决办法]

析构时
用循环吧vector中的指针释放掉
for (int i = 0; i < cc.size(); i++)
{
delete [] cc.at(i);
}

热点排行