第6章 运动的诗章:运行时数据结构

我们之所以要学习运行时系统,主要有3个理由
(1)它有助于优化代码,获得最佳的效率
(2)它有助于理解更高级的材料
(3)当陷入麻烦时,它可以使分析问题更加容易

从本质上说,段在正在执行的程序中是一块内存区域,每个区域都有特定的目的。
(1)文本段包含程序的指令。链接器把指令直接从文件拷贝到内存中,以后便再也不用管它。
(2)数据段包含经过初始化的全局和静态变量以及它们的值。
(3)BSS段是汇编程序的一个伪指令,只保存没有值的变量,所以事实上它并不需要保存这些变量的映像。当这个内存区进入程序的地址空间后全部清零。
包括数据段和BSS段的整个区段通常称为数据区。
(4)堆栈段用于保存局部变量、临时数据、传递到函数中的参数等。还需要堆空间,用于动态分配内存。

堆栈段有3个主要的用途
(1)堆栈为函数内部声明的局部变量提供存储空间。按照C语言的术语,这些变量被称为自动变量。
(2)进行函数调用时,堆栈存储与此有关的一些维护性信息。
(3)堆栈也可以被用作暂时存储区。

如果想返回一个指向在函数内部定义的变量的指针时,要把那个变量声明为static。这样就能保证该变量被保存在数据段中而不是堆栈中。该变量的生命期就和程序一样长,当定义该变量的函数退出时,该变量的值依然能保持。当该函数下一次进入时,该值依然有效。
存储类型说明符auto关键字在实际中从来用不着。它通常由编译器设计者使用,用于标记符号表的条目,它表示在进入该块后,自动分配存储。

线程是一种非常强大的编程模式,即使在单个处理器上也可以提高性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值