6

问答题 6 /290

下面代码会出现什么问题?
char *GetMemory( void ) 
{  
 char p[] = "hello world";  
 return p;  
} 
void Test( void ) 
{  
 char *str = NULL;  
 str = GetMemory();  
 printf( str );  
} 

参考答案

char p[] = "hello world";  
return p;  
的p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期。