gpt4 book ai didi

c++ - C和C++如何在堆栈上存储大对象?

转载 作者:IT老高 更新时间:2023-10-28 21:58:57 25 4
gpt4 key购买 nike

我试图弄清楚C和C++如何在堆栈上存储大对象。通常,堆栈是一个整数的大小,所以我不明白在那里存储了更大的对象。他们只是占用多个堆栈“插槽”吗?

最佳答案

堆栈是一块内存。堆栈指针指向顶部。可以将值压入堆栈并弹出以检索它们。

例如,如果我们有一个被两个参数调用的函数(一个字节大小,另一个2字节大小;假设我们有一台8位PC)。

两者都被压入堆栈,这使堆栈指针向上移动:

03: par2 byte2
02: par2 byte1
01: par1

现在调用该函数并将返回地址添加到堆栈中:
05: ret byte2
04: ret byte1
03: par2 byte2
02: par2 byte1
01: par1

OK,在函数中我们有2个局部变量; 2个字节之一和4个字节。为此,在堆栈上保留了一个位置,但是首先我们保存了堆栈指针,因此我们通过向上计数来知道变量从哪里开始,通过向下计数来找到参数。
11: var2 byte4
10: var2 byte3
09: var2 byte2
08: var2 byte1
07: var1 byte2
06: var1 byte1
---------
05: ret byte2
04: ret byte1
03: par2 byte2
02: par2 byte1
01: par1

如您所见,只要有剩余空间,就可以将任何东西放在堆栈上。否则,您将获得赋予该站点名称的现象。

关于c++ - C和C++如何在堆栈上存储大对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com