Chinaunix首页 | 论坛 | 博客
  • 博客访问: 159782
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 729
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-08 14:00
文章分类

全部博文(9)

文章存档

2015年(1)

2014年(2)

2013年(6)

分类: LINUX

2013-05-26 22:32:51

           Linux下的C语言程序开发主要有两个标准,一个是ISO C(所谓的ANSI C),另一个就是起初由IEEE开发的POSIX标准。大家有兴趣的可以去看一下相关的标准头文件说明。前者为可移植性提供了保证,这里主要简单的归结一下C语言的存储类型关键字的类型,作用范围,生存周期,存储位置(进程空间内)。
          1.  首先提一下C语言的变量和函数的声明定义格式。
            变量:存储类型 类型修饰符 数据类型 变量名 (auto signed int i )
            函数:  存储类型 返回数据类型 函数名(参数1,....参数n)
           2.  下面开始归结一下。(表示做表格做的很稀烂,就简单点了,忘见谅啊)
              ******* 存储类型    ******** 作用范围 ************生存周期 *********** 存储位置******
                    auto 变量                  { func }                          当前函数体内               存储在进程空间的栈区
                    extern函数                 整个项目                        整个程序运行期               code段
                    extern变量                整个项目                         整个程序运行期              已经初始化的在data段,未初始化的在BBS段
                    static函数/全局变量     当前文件                        整个程序运行期               函数在code段,全局变量同EXTERN变量
                     static局部变量           { func                          整个程序运行期              同EXTERN变量
                     register变量               
 { func }                        当前函数体内               程序运行时存储在CPU寄存器中
                     常量                         当前文件                         整个程序运行期               
code段
           *******************************************************************************
               PS:register关键字只能标识整型和字符型变量,并且只用于局部变量,被定义为register变量常驻CPU寄存器。有兴趣可以查一下编译器如何对关键字进行处理的,并且可以用相关的SIZE, readelf等命令查看这些段的信息。
           3.进程空间粗略分布
            
            栈区(向下增长)                                         (高地址)
            堆区(向上增长)  
            BBS区
            data区
            代码区                                                           (低地址)

       表格给出的并不是一个完整的段区集合,有兴趣的看一下程序员的自我修养,有详细的讲解。
       PS:对于堆和栈的区别简单的来说的话,就是前者是你的操作系统OS使用的,后者是程序员(如MALLOC分配)能用的。栈区是连续的区域,堆区存在着碎片。所以在使用堆区的时候,注意释放垃圾资源的空间。



            
                 


                    
    

               

            
            
阅读(3254) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~