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

进程的内存分布

  • 内存
  • 2024-07-18 18:02:52
  • 1712

一、Linux进程虚拟地址空间的分布,以及堆和栈的区别1、具体分配如图:
2关于堆和栈
(1)分配方式:
栈:由编译器自动分配和释放。用于存储函数参数值、局部变量的值等。它的工作方式类似于数据结构中的堆栈。
Haap:通常由程序员分配和释放,其分配方式类似于链表。
(2)申请后系统响应:
栈:只要请求的空间小于栈中剩余空间,系统就会为程序分配内存,否则栈会溢出。
希望:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历链表,找到第一个大于申请空间的节点,然后删除。从链表中取出并替换它。如果没有用完,系统会将多余的放回链表中。
(3)申请大小的限制:
栈:栈是一块从高地址向低地址延伸的连续内存,栈的大小一般为2M;
堆:堆是从低地址向高地址延伸的连续内存。扩展非连续内存,堆的大小与计算机的有效虚拟内存有关。
(4)应用效率:
Stack:由系统自动分配,速度较快;
Haap:速度慢,容易产生内存碎片;
Linux命令介绍,请参见阅读“你应该如何学习Linux”。有关本章的详细信息,地址为3w(dot)linuxprobe/chapter-02(dot)html。