打印

程序输出问题

[复制链接]
797|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝