金牌会员
 
- 积分
- 1185
- 金钱
- 1185
- 注册时间
- 2015-9-18
- 在线时间
- 422 小时
|
5金钱
如上代码程序是<<C++ primer plus>>教程源码,小弟心中有个疑惑,恳请大神指导~
我记得我在学习C的过程中,公司同事跟我说过:在被调用函数中:如果函数的返回值是某个局部变量,或者某个局部变量的地址,那么这个返回值是不确定的,因为局部变量时放在栈内存中的,如果退出这个函数,这个局部变量所在的内存是不确定的.
现在在学习C++的过程中,我想请教大神帮我指点下~
问题1:在C编译器环境下,这句话是正确的吗???
问题2:如果将C编译环境换为C++编译环境,那么这句话还能同样成立吗?如果成立的话,那上面的这段程序该如何解释???
恳请大神指教~~~
|
最佳答案
查看完整内容[请看2#楼]
“在被调用函数中:如果函数的返回值是某个局部变量,或者某个局部变量的地址,那么这个返回值是不确定的,因为局部变量时放在栈内存中的,如果退出这个函数,这个局部变量所在的内存是不确定的”
问题1:
如果返回的是局部变量的值,是没有问题的;但是如果返回的是被调用函数局部变量的地址,就会有可能有问题,因为这个局部变量的地址在栈中,当你退出这个函数的时候,或许发生其他函数调用或中断,就会将这个栈地址的值刷新掉, ...
|