第40课 - 程序的内存布局

1、程序文件的一般布局 

第40课 - 程序的内存布局

第40课 - 程序的内存布局

                                                         程序文件未运行时

2、程序与进程 

程序和进程不同 

               -程序是静态的概念,表现形式为—个可执行文件 

               -进程是动态的概念,程序由操作系统加载运行后得到进程 

               -每个程序可以对应多个进程 

               -每个进程只能对应—个程序

 

3、思考 

面试中的小问题 

                  包含脚本代码的文本文件是—种类型的可执行程 

                  序吗?如果是,对应什么样的进程呢?

 

4、程序与进程

第40课 - 程序的内存布局

 

5、程序文件的一般布局 

文件布局在内存中的映射 

第40课 - 程序的内存布局

 

6、程序的内存布局

各个段的作用 

                 - 堆栈段在程序运行后才正式存在,是程序运行的基础 

                 - .bss段存放的是未初始化的全局变量和静态变量 

                 - .text段存放的是程序中的可执行代码 

                 - .data段保存的是已经初始化了的全局变量和静态变量 

                 - .rodata段存放程序中的常量值,如字符串常量 

 

7、程序术语的对应关系 

            静态存储区通常指程序中的.bss.data段 

            只读存储区通常指程序中的.rodata段 

            局部变量所占空间为上的空间 

            动态空间中的空间 

            程序可执行代码存放于.text

 

8、思考 

面试中的小问题 

                    同是全局变量静态变量,为什么初 

                    始化的和未初始化的保存在不同段中?

 

若区分对待,加载时,未初始化的都初始化为0,

c语言以高效著称(自己思考C语言设计时可能考虑更多)

 

9、小结

            程序编码在编译后对应可执行程序中的不同存储区 

            程序和进程不同,程序静态概念进程是动态概念 

            堆栈段是程序运行的基础,只存在于进程空间中 

            程序可执行代码存放于.text段,是只读的 

            .bss.data段用于保存全局变量静态变量