调用函数中手动分配的内存,如何在主函数中删除

来源:互联网 发布:淘宝返利网最高返36 编辑:程序博客网 时间:2024/06/06 06:43
/********************************************************************************
       在调用函数中手动分配的内存,如何在主函数中删除,保证没有内存泄露!
********************************************************************************/


/******************************错误的情况*************************************/


void fun( int *(&p), int num )
{
p = new int[num]( );
...................;
}


int main( )
{
int *q, num;
fun( q, num );
delete []q;//会报错
}


/******************************方法(一)*************************************/


int* fun( int num )
{
int *p = new int[num]( );
...................;
return p;
}


int main( )
{
int *q, num;
q = fun( num );
delete []q;//正常删除调用函数中分配的内存
}


/******************************方法(二)*************************************/


void fun( int **p, int num )
{
*p = new int[num]( );
...................;//对*(*p + X )操作
}


int main( )
{
int *q, num;
fun( &q, num );//注意此处是&q,不是q
delete []q;//正常删除调用函数中分配的内存
}
0 0
原创粉丝点击