• 5731阅读
  • 3回复

关于释放内存空间的,帮忙看看 [复制链接]

上一主题 下一主题
离线liangdong17
 
只看楼主 倒序阅读 楼主  发表于: 2010-08-15
关于二维的定义

a=new int  *[n];
for(i=0;i<n;i++)
{
     a=new int [m];
}

请问大虾们如何释放呢?
离线dbzhang800

只看该作者 1楼 发表于: 2010-08-15
离线blackdire

只看该作者 2楼 发表于: 2010-08-15
这个显然不对啊

在循环里又对a赋值,原来的new出来的内存没有delete,每赋值一次,就内存泄露一次。

应该这样:
int** a=new int  *[n];
for(i=0;i<n;i++)
{
     a [ i ]=new int [m];
}

释放的时候:
for(i=0;i<n;i++)
{
     delete[] a [ i ];
     a [ i ] = NULL;
}
delete[] a;
a=NULL;
离线liangdong17
只看该作者 3楼 发表于: 2010-08-15
回 2楼(blackdire) 的帖子
释放的时候前面加个一句可以吗?
if(a!=NULL)
{
  for(i=0;i<n;i++)
  {
       delete[] a [ i ];
       a [ i ] = NULL;
  }
  delete[] a;
  a=NULL;
}
快速回复
限100 字节
 
上一个 下一个