程序中的栈:

函数调用过程:

函数调用栈的变化:

ebp的作用就是用来进行函数调用的返回的。

函数返回仅仅是修改了esp指针,栈中的数据不会立即改变。

函数调用栈上的数据:

g返回后,a数组的数据已经没有意义了。

示例:

g返回后,a中的数据就会改变了,示例如下;

第23行调用printf时已经将栈中a数组的数据破坏了。

程序中的堆:

堆的管理:

程序中的静态存储区:

全局变量和静态局部变量最终都会保存到静态存储区。静态存储区的信息最终保存在可执行程序当中,例如静态存储区的大小信息,从什么地方开始到什么地方结束,这些都会保存在exe或者.out可执行程序里面。

示例:

#include <stdio.h>int g_v = 1;static int g_vs  = 2;void f()
{static int g_vl = 3;printf("%p\n", &g_vl);
}int main()
{printf("%p\n", &g_v);printf("%p\n", &g_vs);f();return 0;
}

运行结果如下:

可以看到这三个变量放在了一起。

静态数据的大小与位置在编译期就确定了。

小结:

转载于:https://www.cnblogs.com/wanmeishenghuo/p/9551672.html

第39课 程序中的三国天下相关推荐

  1. C基础第39课--程序中的三国天下--栈,堆,静态存储区

    学习自狄泰软件学院唐佐林老师C语言课程,文章中图片取自老师的PPT,仅用于个人笔记. 栈是一种行为,后进先出的行为. 在函数调用的过程中,会在内存中维护类似上图的一个活动记录.那么以什么样的方式来维护 ...

  2. C语言笔记 第三十九课 程序中的三国天下

    第三十九课 程序中的三国天下 程序中的栈 栈是现代计算机程序里最为重要的概念之一 栈在程序中用于维护函数调用上下文 函数中的参数和局部变量存储在栈上 栈是一种行为,一种先进后出的行为 栈保存了一个函数 ...

  3. C语言-第30课 - 程序中的三国天下

    第30课 - 程序中的三国天下 一. 概念 内存基本构成     可编程内存在基本上分为这样的几大部分:静态存储区.堆区和栈区.他们的功能不同,对他们使用方式也就不同.     静态存储区:内存在程序 ...

  4. C语言进阶:程序中的三国天下 考研数据结构

    C语言笔记 第三十九课 程序中的三国天下 C语言笔记 第三十九课 程序中的三国天下_YLC_慕类的博客-CSDN博客 C基础第42课 -- 内存操作经典问题分析二 C基础第42课 -- 内存操作经典问 ...

  5. 【C】39.程序中的三国天下

    程序中的三国天下是介绍: 栈, 堆, 静态存储区 栈区 主要保存函数调用时所需要的参数信息.局部变量等信息,还包括一些看不到的返回地址,寄存器信息等等(可以说没有栈程序就没法运行).栈就是一种行为,后 ...

  6. C语言进阶第39式:程序中的三国天下

    程序中的栈 栈是现代计算机程序里最为重要的概念之一: 栈在程序中用于维护函数调用上下文: 函数中的参数和局部变量存储在栈上: 栈保存了一个函数调用所需的维护信息 函数调用过程 每次函数调用都对应着一个 ...

  7. 38、程序中的三国天下

    1.程序中的栈 栈是现代计算机程序里最为重要的概念之一(这个栈和数据结构里面的栈概念上一样,表现形式上不一样) 栈在程序中用于维护函数调用上下文 函数中的参数和局部变量存储在栈上 注: 1.栈:就是一 ...

  8. 第30节 程序中的三国天下

    -------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删. 第一: 程序中的栈 ?  栈是现代计算机程序里最为重要的概念之一 ?   ...

  9. 【C深入】程序中的三国天下,栈,堆,静态内存

    1 栈 1.1 程序中的栈 栈是现代计算机程序里最重要的概念之一. 栈在程序中用于维护函数调用上下文. 函数中的参数和局部变量存储在栈上. 栈是一种后进先出的行为. 1.2 函数调用过程 栈保存了一个 ...

最新文章

  1. 从大麦网架构学到的东西
  2. Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金
  3. 【CKFinder】解决上传中文名文件乱码和文件重命名的问题
  4. mysql快速入门_MySQL快速入门(三)
  5. linux中断处理体系结构分析(一),Linux中断处理体系结构分析(二)
  6. laravel的重定向
  7. (转)awk实例练习(二)
  8. 形式语义学关于带权有向图最短路径的有模式函数算法
  9. 【xpath】多个xpath Element对象,提取结果是一样的
  10. 《数据结构与算法》——线性表之顺序表(SqList)总结
  11. 增值税相关软件基本常识
  12. 张朝阳夜跑33公里:直播聊物理 揭示“超级月亮”成因
  13. 如何通俗易懂地理解递归
  14. js中的shift()函数
  15. 西门子梯形图转换C语言,梯形图和指令表相互转换
  16. 分享一些实用的手机应用
  17. 字号与磅值的对应关系
  18. displayblock详解
  19. 设计模式之SOLID原则
  20. 二十世纪九十年代,可以简化为1990年代

热门文章

  1. Java中抽象类与方法的重写
  2. KOLO是如何赋能NFT音乐行业?
  3. 护肤品行业竞争格局:2022年外资品牌护肤品占据主导地位
  4. 重温士兵突击之后 职场风云
  5. Python学习笔记(六)Python基础_数据类型——字符串
  6. xshell文件传输乱码_在Xshell中使用rz命令上传文件出现乱码且文件无法删除的解决办法...
  7. 一般网站有哪些常见漏洞?
  8. C++:最小二乘法拟合直线
  9. i3 1215U 和 i5 1235U选哪个好
  10. Unity3D案例太空射击(Space Shooter)流程介绍与代码分析(上)