像 int、char 等嵌入式类型可以使用寄存器从函数返回,但是如果函数返回一些大对象怎么办?我建议进程的堆栈不能用于此类问题,对吗?谁能解释一下对象如何传递给被调用者?
SomeObj function() {
SomeObj someObj;
return someObj;
}
最佳答案
通常,在大多数编译器中,堆栈都用于此目的。即使对于大物体也是如此。当被调用函数返回时,调用函数期望在堆栈上找到被调用函数的值。
解决方案之一是在调用函数之前保留堆栈区域。被调用的函数可以访问该区域并用结果填充它(对堆栈的访问毕竟不限于顶部)。
关于C++ 对象值如何从函数返回的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005175/