收录日期:2020/06/01 02:41:25 时间: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;
}

执行查询SQL好像没反应 添加速度问题!急急!源码如下 c/c++ 如何判断输入的信息是字符 ------VB中如何将客户端的文件复制到服务器上------------- 请问panel控件的大小受到什么因素的限制? 写文件,文件内容却为空 请问如何实现这个查询 罪过罪过....留了200大米给你 写文件,文件内容却为空 组合框问题 关于删除租用的服务器端文件 DataStage并行环境设置问题 C程序窗口问题 如何清空文本内容(filestream类),不删除原文件。 VB 我需要用vb写个简单web服务器器现在可以实现浏览htm文件,但是jpg等图像文件浏览不了 rar文件不可以下载 如何解决 关于字符数组与指针的问题 Array.prototype.join.call的疑问 高分求教:DLL是否可以单步调试! C#调用C++中的Dll,传入传出参数为结构体指针,如何转化结构体(急) 如何在sql 注入中删除数据 我怎么知道我的电脑打开了多少网页? AXIS返回对象数组错误 今天第一次发帖 JSF表格中如何获得用户的输入值 散分100,10分钟后结贴 我想在一个 jsp(隔3秒刷新一次)的java脚本里打开一个网页,怎么做啊? VB调DLL问题,急急急!大侠进啊 关于winform textbox输入字符限制的问题,求解决方法。 在C++中怎么把图像,视频,语音存入多媒体数据库中? 大家做海外市场的时候怎么找Reseller的?谢谢