C++ 对象值如何从函数返回的详细信息

标签 c++ assembly stack cdecl

像 int、char 等嵌入式类型可以使用寄存器从函数返回,但是如果函数返回一些大对象怎么办?我建议进程的堆栈不能用于此类问题,对吗?谁能解释一下对象如何传递给被调用者?

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

最佳答案

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

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

关于C++ 对象值如何从函数返回的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005175/

相关文章:

c++ - 如何在使用 bufferevents 写入 libevent 后关闭套接字?

c++ - GDB 显示损坏的指令地址偏移量

c++ - 在 CortexM0 中从 RAM 运行代码时出现 HardFault

java - 堆栈问题,不存储值

c++ - .cpp 和 .h 文件的不同处理方式?

c++ - 作为参数传递时字符串文字的存储类型

assembly - 对齐节的开头是什么意思?

data-structures - 在 O(1) 时间内删除集合中小于或等于 x 的所有元素的数据结构

go - 在go中将回溯堆栈拆分为结构

c++ - 如何以最快的速度加载 128 位数据并兼容 GPU (CUDA C++) 和 CPU (C++)?