汇编和可执行文件(Po学校 计算机科学笔记整理)
来源:互联网 发布:捕鱼游戏算法 编辑:程序博客网 时间:2024/06/05 05:36
1.程序从编译到运行的过程是怎么样的?
源代码——(编译)——obj文件——(链接)[PE 结构]——可执行文件
链接的原因:软件之所以能够实现功能,是因为软件操作硬件,而我们的编程实际上是在一个比较高的维度构筑一个算法。而在底层的东西,例如操纵内存等等一些都是不需要考虑的。这些和底层交互的任务都交给操作系统了。(系统封装好的api,就是和底层做交互任务的函数),所以我们的源代码中链接的东西,也就是这些api。最终的可执行文件也就包含了这些api函数的功能,就能正常的与底层做交互了。
2.编译可以分为两种,一种是调试编译(Debug),一种是发行编译(Release)。
调试编译:每一段代码都会生成汇编语句。
发行编译:对代码进行优化,废代码不生成汇编语言。所以在调试的时候最好用调试编译,因为可以很好的一一对应。
3.程序运行时的内存情况。
内存四区:栈,堆,代码区,常量区。
其中,代码区和常量区是只读的(被保护起来),如果指针向这块区域里面写东西,系统会报错。
4.栈是可增长的。
栈溢出:由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。堆栈溢出很可能由无限递归(Infinite recursion)产生。(自动释放空间)
堆溢出:内存泄漏。(程序员自己释放空间)
阅读全文
0 0
- 汇编和可执行文件(Po学校 计算机科学笔记整理)
- 二进制 (Po学校 计算机科学 笔记整理 )
- 操作系统 (Po学校 计算机科学 笔记整理)
- 程序与CPU(PO学校 计算机科学 笔记整理)
- 内存 (Po学校 计算机科学 笔记整理)
- 06.汇编和可执行文件
- 汇编和可执行文件
- Po学校C++第二课课堂笔记
- Po学校Python第一课(输入输出)
- Po学校Python第二课()
- 文件拷贝以及sock的基本使用(基于PO学校网络课)笔记
- Po学校Lesson12
- 汇编和可执行文件(Debug和Release)
- 汇编笔记整理
- 高级软件工程师之路-汇编和可执行文件
- Po学校Python第三课(list元组循环)
- 计算机科学篇笔记(一)
- 可执行文件装载和进程 笔记
- android+测试基础6 移动测试分类
- 微信小程序--Json数组的构造与调用
- php获取一个星期的第一天时间戳
- 大数据入门-基础篇01-hadoop框架简介
- ES学习笔记(二)
- 汇编和可执行文件(Po学校 计算机科学笔记整理)
- 程序员都会的 35 个 jQuery 小技巧
- postman安装与使用
- python之urllib库的基本使用
- 推荐一款可以替代 Excel 的可视化报表神器!
- 资源释放
- easyui datagrid标题和数据 导出excel
- mapper配置文件-关于动态sql
- [leetcode] 5. Longest Palindromic Substring