程序输出问题

[复制链接]
 楼主| baidudz 发表于 2012-3-30 20:40 | 显示全部楼层 |阅读模式
char
* GetA()
{
char
*p="123";
return p;
}

char
* GetB()
{
char p[]="123";
return p;
}

int main()
{
cout
<<GetA()<<endl;
cout
<<GetB()<<endl;
return
1;
}

请问下为什么打印GetA的结果是"123",而GetB()打印的结果是乱码是为什么呀?
GetA和GetB中p不都是局部变量,当其退出作用域的时候,不是应该打印出来的数据都是乱码?
火箭球迷 发表于 2012-3-30 22:58 | 显示全部楼层
两种方式分配内存的地方是不一样的,char[]分配在函数的堆栈上,函数结束后,内存会释放。而char*不是
分配在函数的堆栈上,所有不会释放。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部