Linux下C程序进程地址空间布局.docx

Linux下C程序进程地址空间布局.docx

ID:50991982

大小:495.72 KB

页数:13页

时间:2020-03-08

Linux下C程序进程地址空间布局.docx_第1页
Linux下C程序进程地址空间布局.docx_第2页
Linux下C程序进程地址空间布局.docx_第3页
Linux下C程序进程地址空间布局.docx_第4页
Linux下C程序进程地址空间布局.docx_第5页
资源描述:

《Linux下C程序进程地址空间布局.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、我们在学习C程序开发时经常会遇到一些概念:代码段、数据段、BSS段(BlockStartedbySymbol) 、堆(heap)和栈(stack)。先看一张教材上的示意图(来源,《UNIX环境高级编程》一书),显示了进程地址空间中典型的存储区域分配情况。          从图中可以看出:·从低地址到高地址分别为:代码段、(初始化)数据段、(未初始化)数据段(BSS)、堆、栈、命令行参数和环境变量·堆向高内存地址生长·栈向低内存地址生长还经常看到下面这个图(来源,不详):                                

2、                                   先看一段程序。 [cpp]viewplaincopyprint?1.#include   2.#include   3.  4.int global_init_a=1;  5.int global_uninit_a;  6.static int static_global_init_a=1;  7.static int static_global_uninit_a;  8.const int const_global_a=1; 

3、 9.  10.int global_init_b=1;  11.int global_uninit_b;  1.static int static_global_init_b=1;  2.static int static_global_uninit_b;  3.const int const_global_b=1;  4./*上面全部为全局变量,main函数中的为局部变量*/  5.int main()  6.{  7.    int local_init_a=1;  8.    int local_uninit_a;  9.  

4、  static int static_local_init_a=1;  10.    static int static_local_uninit_a;  11.    const int const_local_a=1;  12.  13.    int local_init_b=1;  14.    int local_uninit_b;  15.    static int static_local_init_b=1;  16.    static int static_local_uninit_b;  17.    cons

5、t int const_local_b=1;  18.  19.    int * malloc_p_a;  20.    malloc_p_a=malloc(sizeof(int));  21.  22.    printf("         &global_init_a=%p t            23.         global_init_a=%d",&global_init_a,global_init_a);   24.  25.    printf("       &global_uninit_a=%p 

6、t          26.        global_uninit_a=%d",&global_uninit_a,global_uninit_a);      27.  28.    printf("  &static_global_init_a=%p t     29.        static_global_init_a=%d",&static_global_init_a,static_global_init_a);  30.      31.    printf("&static_global_uninit_a

7、=%p t   32.        static_global_uninit_a=%d",&static_global_uninit_a,static_global_uninit_a);  33.      1.    printf("        &const_global_a=%p t           2.        const_global_a=%d",&const_global_a,const_global_a);     3.  4.      5.    printf("         &gl

8、obal_init_b=%p t            6.        global_init_b=%d",&global_init_b,global_init_b);    7.  8.    printf(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。