http://hi.baidu.com/wenjiashe521/item/e68914d847ad0be654347ffa
char *GetMemory( void )
{
char p[] = "hello world";
return p;
}
void Test( void )
{
char *str = NULL;
str = GetMemory();
printf( str );
}
无法得到hello world,因为指针p指向的内容在函数结束时候被释放
如果函数中的p是通过new得到的呢
char *GetMemory()
{
char *p = new char[];
p = "hello world";
return p;
}
int main( void )
{
char *str = NULL;
str = GetMemory();
printf( str );
getch();
}
尝试之后,可以得到hello world,说明通过new申请的内存空间在函数调用结束时仍然存在