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)说明对编译器来说只是一个建议,编译器可以选择忽略这个建议。内联机制适用于优化小的,且经常

 被调用的函数。如递归。