/********************************************************************************
在调用函数中手动分配的内存,如何在主函数中删除,保证没有内存泄露!
********************************************************************************/
/******************************错误的情况*************************************/
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;//正常删除调用函数中分配的内存
}
在调用函数中手动分配的内存,如何在主函数中删除,保证没有内存泄露!
********************************************************************************/
/******************************错误的情况*************************************/
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;//正常删除调用函数中分配的内存
}