static局部对象 应该在定义是就初始化。这种对象一旦被创建,在程序结束前都不会被撤销。
高地址 +--------------------------------------------+
命令行参数
---------------------------------------------
stack 栈区
函数压栈
由高地址向低地址延伸
--------------------------------------------
heap 堆区
new
由低地址向高地址伸张
---------------------------------------------
未初始化全局变量
变量bbs区,用零初始化
----------------------------------------------
已初始化变量,静态变量,常量
数据(数据区)
---------------------------------------------
代码区(只读)
低地址 +----------------------------------------------+
inline
1.内联函数避免了调用函数的开销。
const string & shorterString( const string &s1, const string &s2)
{
return s1.size() < s2.size() ? s1:s2;
}
将函数指定为内联函,通常就是将它在程序中的调用点上"内敛地"展开.
cout << shorterString(s1,s2)<<endl;
在编译时将展开为:
cout<<s1.size() < s2.size() ? s1:s2<<endl;
2.把内联函数放入头文件。
把内联函数的定义放在头文件中,可以确保在调用函数时所使用的定义是相同的,并且保证在调用点该函数的
定义对编译器是可见。
在头文件中加入或修改内联函数时,使用了该头文件的所有源文件必须重新编译。
内联(inline)说明对编译器来说只是一个建议,编译器可以选择忽略这个建议。内联机制适用于优化小的,且经常
被调用的函数。如递归。