int,char等嵌入类型可以使用寄存器从函数返回,但是如果函数返回一些大对象会怎样。我建议进程的堆栈不能用于这样的问题,对不对?任何人都可以解释对象如何传递给被叫者?
SomeObj function() {
SomeObj someObj;
return someObj;
}
答案 0 :(得分:3)
通常在大多数编译器中,堆栈用于此目的。即使对于大型物体,情况仍然如此。当被调用函数返回时,调用函数期望在堆栈上找到被调用的函数值。
其中一个解决方案是在调用函数之前保留堆栈区域。被调用的函数可以访问该区域以用结果填充它(对堆栈的访问不仅限于顶部)。