内存结构说明:

一个程序运行时需要占用内存空间来存储数据和代码,可以使用的内存从逻辑上可以为五个部分,按照地址从高到低依次是:

栈(stack)、堆(heap)、数据段(data segment)、只读数据段(static area)和代码段(code segment)。

栈:用来存储局部、临时变量,以及函数调用时保存现场和恢复现场需要用到的数据,这部分内存在代码块开始执行时自动分配,代码块执行结束时自动释放,通常由编译器自动管理。

堆:大小不固定,可以动态的分配和回收,因此如果程序中有大量的数据需要处理,这些数据通常都放在堆上,如果堆空间没有正确的被释放会引发内存泄露的问题,而像Python、Java等编程语言都使用了垃圾回收机制来实现自动化的内存管理(自动回收不再使用的堆空间)。

数据段:通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

代码段:通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

程序的内存分布学习 

相关文章:

  • 2021-11-10
  • 2021-12-24
猜你喜欢
  • 2021-06-07
  • 2021-10-21
  • 2022-01-31
  • 2021-10-12
  • 2022-12-23
  • 2021-10-12
  • 2019-06-14
相关资源
相似解决方案