- 博客(5)
- 收藏
- 关注
转载 什么是运行库
main函数真的是程序的起始么?如果不是,那么是谁在幕后呢?运行库(CRT)。运行库职责的主要流程:1.初始化和操作系统版本有关的全局变量2.初始化堆3.初始化I/O4.获取命令行参数和环境变量5.初始化C库的一些数据6.调用mian并记录返回值7.检查错误并将main的返回值返回OS装载好程序后,首先运行的是别的代码,它们负责准备好main所需的环境,并调用m
2016-11-23 19:41:15 3760
转载 内存管理和堆
栈上的数据在函数返回后会被释放掉,所以栈无法将数据传递到函数外部;而全局变量能传递到函数外面却无法动态产生,只能在编译时定义(某些是运行时定义),缺乏表现力。大家都知道申请一个堆空间,用的就是malloc函数,那么是如何实现的呢?如果每次申请堆空间用系统调用,那么对性能的开销很大。所以应提前向操作系统申请一块适当大小的堆空间由程序自己管理(即程序的运行库)。即运行库向操作系统申批发了较
2016-11-23 19:02:24 210
原创 内存管理与栈
早期的计算机中,要运行一个程序,会将这个程序全部装入内存,也就是说程序访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证程序用到的内存总量要小于计算机实际物理内存的大小。于,是有了以下的问题:1.进程间的地址空间不隔离(直接整个运行在内存上,会导致进程间数据的相互影响)2.内存使用率低(当内存空间不足以运行更多的程序时,不得不将某个在运行的程序的部分数据暂时拷贝到硬
2016-11-22 21:25:53 274
原创 信号量与互斥量
信号量与互斥量简洁点,信号量用于进程之间的同步,互斥量用于进程对资源的独占。打个比方,信号量就像是一个公共厕所,里面有很多个坑位,当有空闲的坑位时,外面的人就可以进来,当最后一个人进入时,就将厕所门口的牌子翻到"已满"。当有人出去时,即将牌子翻到“空闲”。而互斥量是一个带锁的厕所,只有一把钥匙,当有钥匙的人进去之后,只能等他再出来锁上,并将钥匙交给下一个人后,下一个人才能进入。区别:互斥量
2016-11-22 19:11:34 423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人