请教大家一个通过传递二维指针,在函数内部开辟空间,函数外部使用该内存并释放的问题。
下面是一个在函数内部开辟空间,函数外部操作内存的例子:
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num );
}
void Test( void )
{
cout<<"in fun Test:"<<endl;
char *str = NULL;
//char **str2=NULL;
GetMemory( &str, 100 );
//GetMemory((str2,100));
strcpy( str, "hello\n" );
printf( str );
}
函数可以正确执行,那么如果在调用的时候使用下面的方式:
void Test( void )
{
cout<<"in fun Test:"<<endl;
char **str2=NULL;
GetMemory((str2,100));
strcpy( str, "hello\n" );
printf( str );
}
通过上述的方式,却不能达到相同的目的。
我感觉传递一个二维指针和一个一维指针的地址(二维指针)应该是一样的,再加上我在调用之前都是为指针置空,所以感觉效果应该一样。
希望大家给一点建议,谢谢! |