收录日期:2019/11/19 15:07:02 时间:2016/07/16 21:40:09 标签:C++ 语言
list<int> **p=new list<int> *[size];

for(int i=0;i<size;i++)
{
  p[i]=new list<int>;
}

 然后 ,怎么才能释放堆上分配的资源 

请给出 分析 及代码 :》 

都在堆上还需要什么技巧吗?
 析构 路过
引用 1 楼 yuwenliang 的回复:
都在堆上还需要什么技巧吗?


我觉得也是。
list本身里面的东西就是new出来的。
list<int> ls; 不用时ls.clear();
这个已经足够了。
list是标准库,自己定义了析构函数,能自动释放
for(int i=0;i <size;i++) 

  if(p[i])
  delete p[i];
list <int> **p=new list <int> *[size];  //在堆上分配出size个元素得指针数组

for(int i=0;i <size;i++) 

  p[i]=new list <int>; //在堆上分配出size个链表


先释放链表,再释放指针数组
for(int i=0;i <size;i++) 

  delete p[i];
  p[i] = NULL;
}

delete [] p;
list好像不需要自己来new吧
引用 3 楼 wsllittlebird 的回复:
list是标准库,自己定义了析构函数,能自动释放

学习。
引用 7 楼 na2650945 的回复:
引用 3 楼 wsllittlebird 的回复:
list是标准库,自己定义了析构函数,能自动释放

学习。


没出生命域,何来析构

for(i=0;i<size;i++)
{
p[i]->clear();
delete p[i];
}
delete[] p;
引用 3 楼 wsllittlebird 的回复:
list是标准库,自己定义了析构函数,能自动释放

不要误导大家,list能自己释放自己的空间,但是不能释放楼主分配的指向list指针的内存空间
如果楼主非有这样用的话,必循自己释放自己申请的内存
for(i=0;i<size;i++)
{
    if(NULL!=p[i])
    {
        delete p[i];
        p[i]=NULL;
    }
}
if(NULL!=p)
{
    delete[] p;
    p = NULL;
}

关于模拟登录的一些思考! 我想知道这个图是用什么工具画的。额。。谢谢 最快的方法就是实践 计算机图形学 WMP的用户界面插件 夜幕降临,华灯初上的时候...... 数组排序(初学问题) 灌水 CENTOS系统下不能运行PHP 怎么枚举钩子? 这个程序说明了什么(新手问题) 求助,怎么给table的id号赋值? 请手求助………… tomcat域名绑定问题 求修改索引唯一性的语句 invalid variant operation错误 与【CSDN】并列的 一个标准答案。以后不要问怎么选了老婆了。。 请问大家一个很基础的问题: 新人在此参上。Edit Entry 关于系统激活 新手问题 求ojlovecd、amandag、lxcnn、q107770540四大虾都不会的C#问题 前几年去有次去面试,被BS了 - MFC的地位很惨淡啊 求高手理业务关系 求助 flex中tree图标自定义问题 红旗6.0如何升级firefox和flash player? 菜鸟求助gdb调试 ext中form提交问题 数据库的用法