社区
C++ 语言
帖子详情
关于函数返回值存放的问题
fendouzhe
2010-06-17 12:42:03
如果一个函数如下:
string fun();
如果在调用该函数的时候并没有用变量接受其返回值,那么它的返回值将存放在哪儿?是建立一个常量的临时变量来存储么?
...全文
165
7
打赏
收藏
关于函数返回值存放的问题
如果一个函数如下: string fun(); 如果在调用该函数的时候并没有用变量接受其返回值,那么它的返回值将存放在哪儿?是建立一个常量的临时变量来存储么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
机智的呆呆
2010-06-17
打赏
举报
回复
如果是返回是整形或者字节比较少的对象,那么返回值放入寄存器中~~像vc 整形放入eax~~
如果对象比较大那么,会在栈上分配一个空间,返回值放在栈上~~
ForestDB
2010-06-17
打赏
举报
回复
个人理解,一般放eax(原始类型的值或者对象引用)。
比如
int foo()
{
return 0;
}
在返回的时候mov eax, 0(多半是xor eax, eax),
如果这样调用
int i = foo();
那么随后就会有mov i, eax(仅演示作用,非正确的汇编码),
如果
foo();
那么这个eax的值就被“丢弃”了,没有用到;
又如
string bar()
{
string s = "hello";
return s;
}
同理在返回的时候会将s引用放进eax,
那么
string s = bar();
就会以eax(即引用)调用copy-constructor,
当然如果只调用
bar();
那么这个引用就被“丢弃”了,因为没有用到。
上面只是一般性的理解,建议debug,同时去找点资料看看,得到精准的定义。
乃不知有汉
2010-06-17
打赏
举报
回复
这在你生成 release 版的时候
会根据需要进行优化
如果没引用 根本不会有这个变量生成,会被完全优化掉
详细请参考 返回值优化
zhangweiit
2010-06-17
打赏
举报
回复
返回值会被放置,但是,没有被引用而已
healer_kx
2010-06-17
打赏
举报
回复
[Quote=引用 3 楼 pengzhixi 的回复:]
不想深究这个了,曾经和飞雪讨论过,有所收获但是发现意义不大
[/Quote]
嗯,是啊。不过有收获就好,意义大不大的,要看能不能遇到问题。~
pengzhixi
2010-06-17
打赏
举报
回复
不想深究这个了,曾经和飞雪讨论过,有所收获但是发现意义不大
healer_kx
2010-06-17
打赏
举报
回复
从编译器的实现上看,楼上说的挺好的,无非是利用寄存器和栈了。
python
函数
实战-上
本课程主要讲解python中
函数
使用,主要内容有: 1.
函数
定义 2.
函数
调用 3.
函数
的参数 4.
函数
返回
值
5.
函数
四种类型 6. 全局变量 7. 局部变量 9.组包 10.解包
函数
的
返回
值
存放
在哪里
按照概念来说,
函数
的
返回
值
应该放在被调用
函数
运行结束之后,主调
函数
可以有效访问的地方,也就是说,
函数
返回
值
应当
存放
在主调
函数
开辟的栈空间 但是,计算机硬件的飞速发展使得CPU的通用寄存器字长在不断增长,个...
c语言
函数
返回
值
存储,C语言内存储器分配及
函数
返回
值
的解析
C语言内存分配及
函数
返回
值
的解析。C语言的内存分配主要如下:(1)栈区:在执行
函数
时,
函数
内局部变量(不包含static变量)、
函数
返回
值
的存储单元在栈区上创建,
函数
执行结束时这些存储单元自动被释放。栈区内存分配...
c语言
函数
返回
值
存储,C语言的
函数
返回
值
所
存放
的寄存器
#include int add(int a, int b){...}int asm_compare_one(int a){_asm {mov edx, acmp edx, 1je val1xor eax,eaxjmp val0val1:mov eax, 1val0:}//eax中
存放
返回
值
}int main(){int a, b;scanf("%d %d", &a, ...
函数
返回
值
存放
在哪里?return到哪里?
有这么一个简单的程序: #include using namespace std; int func() ...请教各位牛人,当一个
函数
返回
局部变量的时候,
函数
调用一旦结束局部变量就会被销毁,上面的程序中=号操作是从哪取
值
赋给
C++ 语言
64,690
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章