上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 56 下一页

2022年5月1日

摘要: 前面我们只是讲解了一个函数的活动记录是什么样子的,相信大家对函数的详细调用过程的认识还不是太清晰,这节我们就以 VS2010 Debug 模式为例来深入分析一下。 请看下面的代码: void func(int a, int b){ int p =12, q = 345; } int main(){ 阅读全文
posted @ 2022-05-01 12:41 朴素贝叶斯 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 我们知道,一个C程序由若干个函数组成,C程序的执行实际上就是函数之间的相互调用。请看下面的代码: #include <stdio.h> void funcA(int m, int n){ printf("funcA被调用\n"); } void funcB(float a, float b){ fu 阅读全文
posted @ 2022-05-01 11:54 朴素贝叶斯 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 函数的调用和栈是分不开的,没有栈就没有函数调用,本节就来讲解函数在栈上是如何被调用的。 栈帧/活动记录 当发生函数调用时,会将函数运行需要的信息全部压入栈中,这常常被称为栈帧(Stack Frame)或活动记录(Activate Record)。活动记录一般包括以下几个方面的内容: 1) 函数的返回 阅读全文
posted @ 2022-05-01 10:53 朴素贝叶斯 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 在《C语言程序的内存布局(内存模型)》中我们讲到,程序的虚拟地址空间分为多个区域,栈(Stack)是其中地址较高的一个区域。栈(Stack)可以存放函数参数、局部变量、局部数组等作用范围在函数内部的数据,它的用途就是完成函数的调用。 栈内存由系统自动分配和释放:发生函数调用时就为函数运行时用到的数据 阅读全文
posted @ 2022-05-01 10:11 朴素贝叶斯 阅读(523) 评论(0) 推荐(0) 编辑

2022年4月30日

摘要: 首先我们要解释一个概念——进程(Process)。简单来说,一个可执行程序就是一个进程,前面我们使用C语言编译生成的程序,运行后就是一个进程。进程最显著的特点就是拥有独立的地址空间。 严格来说, 程序是存储在磁盘上的一个文件,是指令和数据的集合,是一个静态的概念; 进程是程序加载到内存运行后一系列的 阅读全文
posted @ 2022-04-30 18:00 朴素贝叶斯 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 在32位环境下,Windows 默认会将高地址的 2GB 空间分配给内核(也可以配置为1GB),而将剩下的 2GB 空间分配给用户程序。 不像 Linux,Windows 是闭源的,有版权保护,资料较少,不好深入研究每一个细节,至今仍有一些内部原理不被大家知晓。关于 Windows 地址空间的内存分 阅读全文
posted @ 2022-04-30 17:44 朴素贝叶斯 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 在《虚拟地址空间以及编译模式》一节中讲到,虚拟地址空间在32位环境下的大小为 4GB,在64位环境下的大小为256TB,那么, 一个C语言程序的内存在整个地址空间中是如何分布的呢? 数据在哪里? 代码在哪里? 为什么要这样分布? 这些就是本节要讲解的内容。 程序内存在地址空间中的分布情况称为内存模型 阅读全文
posted @ 2022-04-30 16:15 朴素贝叶斯 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 通过页表完成虚拟地址和物理地址的映射时,要经过多次转换,还要进行计算,如果由操作系统来完成这项工作,那将会成倍降低程序的性能,得不偿失,所以这种方式是不现实的。 MMU 在CPU内部,有一个部件叫做MMU(Memory Management Unit,内存管理单元),由它来负责将虚拟地址映射为物理地 阅读全文
posted @ 2022-04-30 12:33 朴素贝叶斯 阅读(360) 评论(0) 推荐(0) 编辑

2022年4月28日

摘要: 如果你的电脑上安装了QQ,你希望和好友聊天,会双击QQ图标,打开QQ软件,输入账号和密码,然后登录就可以了。 那么,QQ是怎么运行起来的呢? 首先,有一点你要明确,你安装的QQ软件是保存在硬盘中的。 双击QQ图标,操作系统就会知道你要运行这个软件,它会在硬盘中找到你安装的QQ软件,将数据(安装的软件 阅读全文
posted @ 2022-04-28 14:29 朴素贝叶斯 阅读(396) 评论(0) 推荐(0) 编辑

2022年4月22日

摘要: 小数在内存中是以浮点数的形式存储的。浮点数并不是一种数值分类,它和整数、小数、实数等不是一个层面的概念。浮点数是数字(或者说数值)在内存中的一种存储格式,它和定点数是相对的。 C语言使用定点数格式来存储 short、int、long 类型的整数,使用浮点数格式来存储 float、double 类型的 阅读全文
posted @ 2022-04-22 00:11 朴素贝叶斯 阅读(1361) 评论(1) 推荐(2) 编辑
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 56 下一页

导航