读书人

关于函数调用过程解决方案

发布时间: 2012-04-20 15:27:03 作者: rapoo

关于函数调用过程
在把程序控制权返还给调用者前,被调用者foo必须先把返回值保存在EAX寄存器中。我们前面已经讨论过,当返回值占用多于4个或8个字节时,接收返回值的变量地址会作为一个额外的指针参数被传到函数中,而函数本身就不需要返回值了。这种情况下,被调用者直接通过内存拷贝把返回值直接拷贝到接收地址,从而省去了一次通过栈的中转拷贝。
原文地址:http://www.2cto.com/kf/201111/110912.html
红色的字是我没看懂的:我不太清楚这个所谓的内存拷贝是怎么回事?返回值的变量地址不是存在调用者的栈帧里么?
为什么还要 拷贝呢?
求大牛解答!!!

[解决办法]
那个啥这个就是c++返回值优化的一种实现方式了
[解决办法]
[Example:

C/C++ code
class Thing {public:Thing();?Thing();Thing(const Thing&);};Thing f() {Thing t;return t;}Thing t2 = f(); 

读书人网 >C++

热点推荐