[英]C++ Function returning object created on the stack
我知道当我使用__stdcall
(对于其他调用约定也是如此),返回的值存储在eax
寄存器中。 我想知道以下情况如何发生:
class MyObject
{
private:
int fourBytesInt;
long fourBytesLong;
char name[256];
};
MyObject ReturnMe()
{
MyObject myObj = MyObject();
return myObj;
}
int main(void)
{
MyObject myObj = ReturnMe();
return 0;
}
sizeof(myObj)
是264字节, ReturnMe
函数如何返回这么大的对象,因为寄存器最大可以容纳32位(x86体系结构)。
谢谢!
对于足够小的数据类型,返回值仅放置在寄存器中。 否则,它们将作为副本返回堆栈。 有时副本可能被省略。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.