首页 c内存堆栈解析类比java

c内存堆栈解析类比java

举报
开通vip

c内存堆栈解析类比javac内存堆栈解析类比java C++对内存中堆、栈、静态存储区的理解 堆:顺序随意 栈:先进后出 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始...

c内存堆栈解析类比java
c内存堆栈解析类比java C++对内存中堆、栈、静态存储区的理解 堆:顺序随意 栈:先进后出 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 具体解释:(说通俗点:如果把mian也看成一个局部的函数,就是堆,栈里的东西都是函数调用完后释放) 堆:由程序员自己分配释放(用malloc和free,或new和delete) ,如果我们不手动释放,那就要到程序结束才释放。如果对分配的空间在不用的时候不释放而一味的分配,那么可能会引起内存泄漏,其容量取决于虚拟内存,较大。 栈:由编译器自动分配释放,其中存放在主调函数中被调函数的下一句代码、函数参数和局部变量,容量有限,较小。 静态存储区:由在编译时由编译器分配,由系统释放,其中存放的是全局变量、static变量和常量( 区别: 1)堆是由低地址向高地址扩展,栈是由高地址向低地址扩展。 2)堆是不连续的空间,栈是连续的空间。 3)在申请空间后,栈的分配要比堆的快。对于堆,先遍历存放空闲存储地址的链表、修改链表、再进行分配;对于栈,只要剩下的可用空间足够,就可分配到,如果不够,那么就会报告栈溢出。 4)栈的生命期最短,到函数调用结束时;静态存储区的生命期最长,到程序结束时;堆中的生命期是到被我们手动释放时(如果整个过程中都不手动释放,那就到程序结束时)。 5)举例: void fun() { char *ptr="abcdefg"; //指针变量ptr存在栈空间, 字符串常量"abcdefg”存在静态存储区 char arr[]="abcdef"; //字符数组变量arr(其值"abcdef")存在栈空间 char cha1='x'; //字符变量cha1存在栈空间 char cha2='y'; //字符变量cha2存在栈空间 char *p_char1 ; //字符指针变量p_char1存在栈空间 char *p_char2; //字符指针变量p_char2存在栈空间 p_char1 = arr; //p_char1指向栈空间 p_char2=(char*)new char[10]; //分配10字节的堆空间,p_char2指向这块堆空间 } 注意:在申请到堆空间,用完之后要及时释放,以免引起内存泄漏。
本文档为【c内存堆栈解析类比java】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:13KB
软件:Word
页数:0
分类:企业经营
上传时间:2017-09-26
浏览量:11