函数栈帧的创建和销毁讲解(不看必后悔系列)(超详细)C语言从入门到入土(进阶篇)(一)

简介: 在文章开始之前,先给大家补充两点,第一个是文章里面好像有一个我说的8进制,其实是16进制哈,就那么一处地方,当然也可能改了咳咳。第二点就是里面16进制数后面有0开头h结尾,那是计算机那么写的,我们不用管,还是按16进制看就行了。

函数栈帧的创建和销毁

41.png


看完之后可以解决上面的疑问。

当然,我们今天讲的函数栈帧都是在栈上开辟的,只讨论局部变量。


42.png


1.基础知识



43.png44.png

2.main函数栈帧的创建

45.png46.png47.png48.png49.png50.png51.png52.png53.png


PS:栈区内存从高地址向低地址走,所以我们等下往上走。

54.png55.png56.png


这里我们就可以通过调试里面的内存去看esp的地址里面存放的内容就是ebp的地址

 

57.png58.png59.png60.png61.png



PS:这里预开辟的空间是编译器决定的,我们自己也是不知道的。  

40.png

相关文章
|
1月前
|
存储 安全 C语言
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-2
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-2
|
1月前
|
存储 编译器 C语言
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-1
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-1
|
2月前
|
存储 编译器 C语言
C语言:底层剖析——函数栈帧的创建和销毁
C语言:底层剖析——函数栈帧的创建和销毁
|
2月前
|
存储 编译器 C语言
C 语言函数栈帧的概念讲解
C 语言函数栈帧的概念讲解
30 0
|
3月前
|
存储 编译器 程序员
C语言之反汇编查看函数栈帧的创建与销毁(二)
C语言之反汇编查看函数栈帧的创建与销毁(二)
|
16天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
26 0
|
26天前
|
编译器 C语言 C++
【C语言】memset()函数(内存块初始化函数)
【C语言】memset()函数(内存块初始化函数)
26 0
|
1天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
1天前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
2天前
|
存储 C语言
C语言函数的返回值
C语言函数的返回值
7 0