码迷,mamicode.com
首页 > 其他好文 > 详细

6.4个区.doc

时间:2015-11-22 21:40:48      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

C语言程序经过编译链接后形成二进制映像文件由栈,堆,数据段,代码段组成,其中数据段又分为:只读数据段,已经初始化读写数据段,未初始化数据段(BSS段)。如下图所示:

技术分享

1.栈区(stack):由编译器自动分配释放,存放函数的参数值局部变量等值。其操作方式类似于数据结构中的栈。

2.堆区(heap):一般由程序员释放,若程序员不释放,则可能会引起内存泄露。

    注:1)堆和数据结构中的堆栈不一样,其类是链表。

        2)所谓的内存泄露是指程序在不断运行中内存越来越少,如果程序结束了,那么操作系统会自动将其占用的内存释放掉。

3.程序代码区:存放函数体的二进制代码,这一部分只可读,不可写。

4.数据段:

    1)只读数据段:只读数据段是程序使用的一些不会被更改的数据,存放到只读存储器(和代码区一起)。一般是const修饰的变量和程序中使用的一些文字常量

    2)已初始化的读写数据段:在程序中声明,并且具有初值的变量,在程序运行中位于可读写的内存区域,一般为初始化过的全局变量初始化过的static局部变量

    3)未初始化段(BSS):未初始化的数据是在程序中声明,但是没有被初始化的变量,属于静态存储区。未初始化数据段只有在运行的初始化阶段才会产生,因此它的大小不会影响目标文件的大小。在程序中一般是没有初始化的全局变量没有初始化的静态局部变量





附件列表

     

    6.4个区.doc

    标签:

    原文地址:http://www.cnblogs.com/dchipnau/p/4986784.html

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!