C程序在内存中的组织方式

对我本人来说,学习任何一种高级语言,总想知道高级语言是如何被编译并载入内存的,一个程序的运行,在计算机内存中是怎样组织的等等问题,总想打破砂锅问到底,有好多疑问,因此我就学习了汇编语言,汇编语言确实让你能了解很多底层的东西,它可以直接跟寄存器接触,内存单元接触,自己创建一个栈空间,也可以自己编写安装自己需要的中断例程,让中断向量表相应的入口地址指向自己编写安装的中断例程,让你了解什么是端口,怎样通过汇编指令对这些端口进行读写,让你了解键盘即鼠标的工作原理,自己编写键盘程序等等,确实很有意思,但是汇编有优点,缺点也不少,这里不多说,毕竟主要讲的是C语言。

站在用户的角度思考问题,与客户深入沟通,找到靖远网站设计与靖远网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖靖远地区。

学习任何东西,都不能了解就好,不能一知半解,毕竟大二全不如小而精,人才都是精通某一领域,在某一领域上作出贡献,更不能没信心,一有难题解决不了,就失去信心,从而放弃,那是绝不可取的,如果这样那么一辈子也做不了什么事。算了,侃这么多跟标题无关的事,请大家原谅,下面正式介绍一下C语言在内存中的组织方式,其实没有过多要讲,但是还是介绍一下吧!

一个可以执行的C程序,一般说来有四个区域组成,哪四个呢?你猜?当然不可能要你猜,猜是猜不着的,那就说出来吧:①、代码段,程序运行时执行的机器指令,何为机器指令,也就是一连串的二进制数,电脑认不得高级语言,必须被编译等阶段转换成二进制机器指令才能被机器所知晓,如if(a>b)…,它也会被编译成机器指令(二进制代码),具体是什么样的机器指令,说实话我也不太清楚。②、静态数据区,包含程序运行周期中一直存在的数据,比如全局变量和静态变量,什么字符串常量啊,等等。③、堆区:程序运行时动态分配的存储空间,一般由程序员分配和释放,比如用malloc、calloc等。堆的分配方式类似于链表(以后会说到),但是它跟数据结构中的堆不是一回事,完了,差点又跑偏了,不说了。④、当然就是堆栈中的栈了,一般由系统自动分配,其包含函数的调用信息,存放函数的参数值,还有就是局部变量的值,操作方式跟数据结构中的栈很类似。

举个类子:

int a; ①

char b; ②

int main(){

int b=10; ③

static int n=2; ④

char c[]={'a','b'}; ⑤

char *p="i love you"; ⑥

int *p=(int *)malloc(sizeof(int)); ⑦

}

上面一段程序①跟②,因为是全局变量,很容易想到它们在静态数据区。③处的数据因为是局部的,所以在栈区,④嘛,因为有static修饰符修饰,静态局部变量故在静态数据区,⑤不要说,也是在栈区,局部字符数组,也是局部变量。⑥有所区别,指针变量p毋庸置疑在栈区,但是后面的i love you是常量字符串,却在静态数据区。指针变量p指向字符串常量。⑦不多说,在堆区。

以上就是关于C程序在内存中组织方式的简要介绍。

网站名称:C程序在内存中的组织方式
本文来源:http://www.hantingmc.com/qtweb/news6/157656.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联