今天的收获
2010-09-26 20:59
127 查看
常量折叠
constant folding, 一种编译优化技术。例如:2+2 应该在编译是就处理为4比如你有以下代码。
const double PI = 3;141592653589793;
const double d = 10.0;
const double c = d/2*PI;
在编译时如果使用到c就用计算的结果来代替,这就是“常量折叠”
栈/堆
---------------Heap |
---------------
Stack |
---------------
Const |(字符串常量通常放在data-const区中)
data--Common|
Data |
---------------
Code |
---------------
A 静态数据区:内存在程序启动的时候才被分配,而且可能直到程序开始执行的时候才被初始化,如函数中的静态变量就是在程序第一次执行到定义该变量的代码时才被初始化。所分配的内存在程序的整个运行期间都存在,如全局变量,static变量等。
注意:初始化的全局变量和静态变量在一块区域,未初始化的全局变量与静态变量在相邻的另一块区域,同时未被初始化的对象存储区可以通过void*来访问和操纵,程序结束后由系统自行释放。
B 代码区:存放函数体的二进制代码;
C 栈区:存放自动变量。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元由编译器自动释放,超出其作用域外的操作没有定义。栈内存分配运算内置于处理器的指令集中,效率很高,但分配的内存容量有限。栈存放函数的参数值,局部变量的值等。
D 堆区(自由存储区):在运行的时候调用程序(如C中的malloc或C++中的new)分配内存,可以在任何时候决定分配内存及分配的大小,用户自己负责在何时释放内存(如用free或delete)。堆中的所有东西都是匿名的,这样不能按名字访问,而只能通过指针访问。
函数指针指向Code区,是程序运行的指令代码,数据指针指向Data,Heap,Stack区,是程序依赖以运行的各种数据
在文件作用域声明inline函数默认为static存储类型,const常量默认为static存储,如果加上extern,则为外部存储类型。
相关文章推荐
- 今天的收获
- 今天的收获---实现excel工资单的自动发送
- 今天的辛苦播种,期望到了收获的季节能有个好的收成
- 今天收获挺大,掌握了CP243的通信协议...
- 今天收获不错
- 2016.12.21 今天的收获
- 从今天起,每天都要有收获,UP-14-3-23
- 今天的收获
- gentoo今天收获记录[原创]
- 今天几乎没有收获
- 今天的小收获!!
- 今天收获 --2015/1/12
- 今天收获—— 函数,参数传递
- 今天的小收获
- 今天总结了一下最近学习alsa驱动的收获,
- 今天收获
- 2006年11月30日,今天的收获很大---Broadview印象
- 今天的收获....
- 今天英语有何新收获
- 今天我做了什么事?收获了什么?