5

问答题 5 /290

检查下面代码有什么问题?
void GetMemory( char *p ) 
{ 
 p = (char *) malloc( 100 ); 
} 
void Test( void )  
{ 
 char *str = NULL; 
 GetMemory( str );  
 strcpy( str, "hello world" ); 
 printf( str ); 
} 

参考答案

传入中GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的实参值,执行完
char *str = NULL; 
GetMemory( str );  
后的str仍然为NULL;
1:传入形参并不能真正改变形参的值,执行完之后为空;
2:在函数GetMemory中和Test中没有malloc对应的free,造成内存泄露