网站首页 > 教程文章 正文
关注微信公众号 老卢私塾
堆、栈
先明白一点:一些教材上写的堆栈(stack)其实只是栈。
进程内存地址空间(内核ring0、用户ring3)
先说下静态数据区,一会再说栈、堆
static变量和全局变量的生命周期是一样的:从出生到程序结束。二者都存放在静态存储区。
本文只讨论ring3用户栈,以便与ring0内核栈区分开来。
内核栈是每个进程保留在内核内存中的内存区域,供(内核)内部函数调用时使用。用户栈驻留在不受保护(用户可操作)的用户内存中
l 堆heap
堆是先进先出的
堆空间的增长方向是从低地址向高地址增长
new,malloc/alloc是在堆上申请内存
堆的可用空间远大于栈空间
l 栈stack
栈是先进后出的
栈空间的增长方向是从高地址向低地址增长
栈的作用是局部变量(如函数实参)、函数call堆栈(调用函数时的寄存器信息)
每次调用函数时,会在栈上新分配一帧,每当函数返回时,再从栈上将此帧移去。
用专用寄存器:
1. ESP(栈顶指针)指向栈最上面一个栈帧的栈顶
2. EBP(栈底指针)指向栈最上面一个栈帧的底部
ESP-EBP=栈的大小
函数内的变量都可通过EBP加偏移量找到
- 上一篇: 用最简单的方式,让你理解什么是堆栈式CMOS
- 下一篇: 5分钟搞懂背照堆栈式传感器到底好在哪
猜你喜欢
- 2024-12-30 互联网面经宝典 - 实战篇(阿里巴巴)
- 2024-12-30 「教程」风光摄影达人的杀手锏:延时+堆栈
- 2024-12-30 不同类型的AGV适用于哪些场景呢? agv应用于什么场合
- 2024-12-30 windows 环境下64位汇编语言与32位的区别
- 2024-12-30 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- 2024-12-30 【打印机驱动】PS, PCL 和 PCL6 有什么不同?
- 2024-12-30 类(class)与结构(struct)的区别? 类class与结构体struct的比较
- 2024-12-30 为什么使用ND减光镜而不是后期堆栈?
- 2024-12-30 深入理解Android NDK日志符号化 日志sdk
- 2024-12-30 佳能R系列R3、R5C、R5、R6、R、RP这6款微单哪一个更值得购买呢?
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)