c ++对象值如何从函数中返回详细信息

时间:2014-11-18 22:16:22

标签: c++ assembly stack cdecl

int,char等嵌入类型可以使用寄存器从函数返回,但是如果函数返回一些大对象会怎样。我建议进程的堆栈不能用于这样的问题,对不对?任何人都可以解释对象如何传递给被叫者?

SomeObj function() {
    SomeObj someObj;
    return someObj;
}

1 个答案:

答案 0 :(得分:3)

通常在大多数编译器中,堆栈用于此目的。即使对于大型物体,情况仍然如此。当被调用函数返回时,调用函数期望在堆栈上找到被调用的函数值。

其中一个解决方案是在调用函数之前保留堆栈区域。被调用的函数可以访问该区域以用结果填充它(对堆栈的访问不仅限于顶部)。