bet36体育备用网址

什么是C ++中的“堆栈”?

全部展开
努力思考是件好事,但是您的理解显然被误解了。
堆栈的表面意味着许多人说实现细节很深。让我们谈谈我的理解。
首先,堆栈实现不是物理实现。没有专门设计电池的计算机设计。您需要提供什么计算机?
记忆体
从计算机设计师那里,他们给计算机留下了记忆。您需要知道2GB4GB或8GB每个内存都有一个地址。
然后他知道,如果不接触硬件,那么他通常接触的地址就是物理地址。例如,如果您有一个指向地址0x12345的指针,则不要假定它是相应内存中的地址。实际上,该地址只是一个虚拟地址。该地址的实际答复是什么?那就是操作系统。操作系统内存管理单元负责分配内存。例如,如果操作系统知道实内存0x23456是不活动的,则将0x12345分配给0x23456。这称为内存分配。
然后,您需要知道操作系统与每个正在运行的进程的软件内存和4GB内存没有冲突,无论实际内存是否为2GB8GB。
每个软件都需要知道它可以使用1-4GB的内存地址。对于与操作系统物理相关的事物,我们保证操作系统不是独立的。此实现非常简单。
如果您了解上述内容,则可以说是堆栈。
堆栈是内存的一部分,但是其实现是无法理解的。说您能理解。在汇编代码级别,这是无法理解的逻辑。代码中有很多指令,并且计算机上有很多记录(您知道它是什么)。特别是,堆栈顶部的ebp地址显示了电池的底部地址
两个推送指令意味着它们需要堆叠在一起。换句话说,esp -4pop的值表示esp + 4电池有其自己的电池。例如,最主要的是堆栈,然后将function1函数称为堆栈,但这些不是电池。它实际上是一个相邻地址。通过在每个程序堆栈的顶部注册它们,可以区分它们。
当此功能结束时,刚使用完电池并创建了呼叫电池(电池算法可以执行此操作)。
但是堆栈的地址到底是什么?实际上,堆栈中仅需要初始地址,此后地址值将根据需要逐渐减小,从而减少了所需的数量。如果需要太多,电池将耗尽。
创建堆栈的人员需要了解了解充电器所需的PE文件。双击一个。
为什么EXE文件显示它正在运行?
操作系统首先分配4 GB的内存和其他初始化,并在此过程中创建一个堆栈。
全部由充电器完成。
我不太了解充电器。我从未见过一个名为Load的程序。
e因此,必须使用动态链接来实现加载程序,并且没有特定的程序。
最后,发表您的意见。您不必那么深。如果没有基地,看到基地可能会感到困惑。建议您从一开始就检查操作系统的工作方式。
PD:我说的是窗户。


bet36体育备用网址