繁体   English   中英

在堆栈上创建的C ++函数返回对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM