24小时热门版块排行榜    

查看: 223  |  回复: 2

hzsh2009

铜虫 (小有名气)

[求助] C++代码求助

这段代码运行的时候为什么会出错呢?(我主要是想知道pointer的用法)
int * myFunc () {
int phantom = 4;
return & phantom ;
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
hzsh2009: 金币+6, ★★★很有帮助, 了解了!谢谢! 2013-02-17 07:08:57
fegg7502: 金币+3, 应助指数+1, 专家考核, 3ks 2013-02-17 08:06:30
当函数返回后,它内部的局部变量也就不存在了(例外如后所述)。
您那个phantom只是函数myFunc()内部的局部变量,而该函数返回的又是这个变量的地址;
所以,错了。

例外:其实不应该叫例外,而是需要特别注意的情况。
CODE:
int myfunc()
{
  int * p = NULL;
         p = new int;
         ......
}

那么,调用这个myfunc(),其中分配了内存;
可是,返回之后,变量p已经没有了,那么,那些分配了的内存却没有回收,成为无主垃圾。
2楼2013-02-16 16:41:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

m57091003

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
hzsh2009: 金币+4, ★★★很有帮助, 谢谢解释! 2013-02-17 07:09:17
fegg7502: 金币+2, 应助指数+1, 专家考核, 3ks 2013-02-17 08:06:47
& phantom 是局部变量的地址(引用),函数调用完毕后立即释放了,不存在有效地址。
3楼2013-02-16 16:56:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hzsh2009 的主题更新
信息提示
请填处理意见