当前位置:首页 > 内存 > 正文

堆栈内存示意图

  • 内存
  • 2024-08-22 11:15:56
  • 3873

一、堆栈段是什么?

栈是一个特殊的存储区域,主要用来临时存储数据和地址。

在使用分段内存管理进行程序内存分配的架构中,堆栈段用于存储局部变量和函数返回地址。栈段是在程序运行时动态分配和使用的,只能通过栈顶指针访问。大多数CPU都有一个特殊的寄存器,可以用来存储栈顶地址。

理论上,最小的栈可以是一个只能存储函数调用地址的结构体,这样被调用的函数就可以根据该地址返回到原来的函数。除了此功能之外,开发人员还可以将堆栈用于其他目的。



扩展信息

对象上的函数堆栈里有这个。您放入堆栈的第一个对象始终是最后一个将其取出的对象。此功能通常称为FILO-先进/后出。栈中定义了多种操作,其中最重要的两个是PUSH和POP。

PUSH操作:将栈指针(SP)加1,然后向栈顶添加一个元素。

POP操作,出栈时,将SP指向的内部RAM单元的内容传送到先由其直接地址(目标位置)寻址的单元,然后由堆栈指针寻址(SP)并从中减去1。这两个操作实现了数据项的插入和删除。

参考来源:-Stack

参考来源:-StackSegment


二、堆栈在C语言中看到的,是什么东西啊.有什么作用啊,怎么用?“栈”实际上分为两部分:
堆是指系统中可以动态强调和释放的部分。这部分可以通过代码来利用。
栈是用于函数之间调度的空间的一部分。这部分在代码中没有明显的表示。
要访问堆,可以使用malloc和realloc指令来请求空间。通常您要求的是堆空间中的一个区域,并且通常定义的数组也将使用堆空间。通常情况下,代码所请求的空间必须使用相应的代码进行释放,否则会发生内存泄漏。
关于堆栈,在主函数调用子函数之前,系统会自动将主函数使用的寄存器参数压入堆栈,然后在调用子函数后将参数从堆栈中取出。,实现主功能与子功能寄存器复用功能的连接。

上一篇:内存分布图

下一篇:java内存模型