C语言中堆与栈的区别 堆和栈的概念和区别
本文所说的堆栈不是指数据结构,而是C语言内存空间分配的栈空间和堆空间。
1. 栈(stack): 由操作系统自动开辟空间,函数执行完毕后,空间会被系统自动收回。申请空间效率较快,但不够灵活。栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
2. 堆(heap): 由程序员手动开辟空间,使用完后需要主动释放空间,否则可能会造成地址泄露。申请空间效率一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
来看一个网上很流行的经典例子:
main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456\0在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10); 堆
p2 = (char *)malloc(20); 堆
}
虽然说在main()函数执行结束,堆空间还是会被操作系统自动释放。但是如果程序一直被执行,而不结束,则会造成地址泄露,出现意想不到的后果。所以说在动态开辟空间使用完毕后,一定要手动释放空间。虎头蛇尾是俗人的习惯, 有始有终才是君子的操守。
栈内存:
栈内存主要用来执行程序用的,存储的是局部变量和对象的引用,凡是定义在方法中的都是局部变量,for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,一旦离开作用域,变量就会被释放。栈内存更新的速度很快,因为局部变量的生命周期很短。
栈内存可以类似看做是一个矿泉水瓶,往里面放入东西,会马上沉入底部,所以它的特点是:
先进后出,后进先出
栈的存储速度比堆要快,仅次于寄存器,栈数据是可以共享,但是缺点是,存在栈中的数据大小和生存必须是确定的,缺乏灵活性
栈内存可以称为一级缓存,由垃圾回收器自动回收。
堆内存:
堆内存存储的是数组和对象(数组是特殊的对象),凡是new建立的都在堆里,堆中存放都是对象,对象用于封装数据,而且是封装多个属性,如果一个属性消失,这个实体也不会消失,还可以用,所以堆不会随时释放的。虽然对象不会被释放,但是会被当成垃圾,Java有垃圾回收机制不定时的回收。
堆其实可以类似看做是管道,或者说是平时去排队买票,特点是:先进先出,后进后出
堆是在运行时动态分配内存的,存储速度较慢
堆内存可以称为二级缓存,堆中的对象不会随时释放,一般需要开发人员自己回收它
堆和栈的区别:
1. 栈内存存储的是局部变量,而堆内存存储的是实体对象。
2. 栈的更新速度要快于堆内存,因为局部变量的生命周期很短。V栈 > V堆
3. 栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。
4. 共享性不同,栈内存是线程私有的,堆内存是所有线程共有的。
5. 栈使用一级缓存,通常是被调用时处于存储空间,调用完立即释放。
堆存放在二级缓存中,生命周期由虚拟机的垃圾回收算法决定。
6. 堆是先进先出,后进后出,栈是先进后出,后进先出
7. 栈的空间远远小于堆的空间
相关阅读
-
07-20
推荐阅读
-
“羲和号”首次获得三种太阳谱线轮廓
‘羲和号’发射后,已经在空间首次同时获得了太阳全日面Hα谱线、Si I谱线和Fe I谱线的精细结构和光谱成像,以及几十个太更多
2022-07-20 14:24:32
-
飞秒激光“点亮”空气形成3D影像 飞秒激光显示技
伴随嗞嗞作响的击穿声,虹拓科技日报五角星等汉字和图形悬空呈现,肉眼能观、双手可触。7月19日,科技日报记者在武汉东湖高新区虹拓超快激更多
2022-07-20 14:23:22
-
环氧乙烷:冰激凌里的“砒霜” 作口罩消毒剂却“
近日,某知名品牌冰激凌被检出含有毒且致癌成分——环氧乙烷。事发后,有网友表示,这次检出的致癌物,也被用来给日常佩戴的口罩消毒,这样更多
2022-07-20 14:19:01
-
溶于泪液的硅纳米针隐形眼镜面世 未来或有望用于
美国普渡大学、密歇根大学与韩国汉阳大学、弘益大学和国立金乌工科大学的研究人员携手开发出一种内嵌纳米针的隐形眼镜,其可溶于泪液,未来更多
2022-07-20 14:14:04
-
为什么雄蟑螂不能吸引雄蟑螂? 蟑螂“恋爱”奥秘
为什么雄蟑螂不能吸引雄蟑螂?为什么雄蟑螂更喜欢性成熟的雌蟑螂?蟑螂近30年来的恋爱奥秘被科学家破译了。蟑螂是蜚蠊目昆虫俗称,包括有美洲更多
2022-07-20 14:06:30
-
清华大学固体氧化物电解池制氢系统样机开发项目通
7月16日,清华大学固体氧化物电解池(SOEC)制氢系统样机开发项目验收会议在北京召开。中国科学院院士、清华大学教授欧阳明高,清华大学副研更多
2022-07-20 14:04:36
-
realme x配置怎样? realme x有呼吸灯吗?
realme x配置怎样realme x配置情况:6 53英寸三星AMOLED全面屏,屏占比达91 2%,前置采用1600万脉冲式升降摄像头,升降寿命可达20万次。更多
2022-07-19 16:03:52
-
北京打造人工智能产业新生态 构筑创业者乐土营造
无人驾驶、智慧工厂、远程医疗……如今,人工智能(AI)技术在北京被广泛应用于金融、交通、医疗、安防、教育等领域,为社会经济高质量发展赋更多
2022-07-11 10:22:09
时尚热图
热门标签
精彩放送
-
07-22
-
07-22
-
07-22
-
07-22
-
07-22
-
07-22
-
07-22
-
07-22
-
07-22
-
07-22
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
07-21
-
今日必看
-
精彩话题
-
最新见闻
- 环球即时:上市公司正负面新闻2022年07月21日
- 世界动态:加码高阶智驾,国内开放首个无人化出行商业试点
- 当前快看:【盘前播报】建议淡化指数,密切关注量能是否有效补充,积极布局运作轮动板块
- 天天关注:新股申购(打新小闹钟)2022年07月21日
- 环球关注:电网单月投资额环比大增74%!南方电网旗下A股三个月暴涨近3倍,这些上市公司受益
- 最新快讯!最高800万!购房补贴政策潮起:地方政府积极稳楼市
- 全球消息!乌克兰要违约了?政府计划推迟两年偿还外债
- 【全球独家】冲A股失利转战港股,柠萌影业终得入场券,堪称爆款制造专业户,持久率如何?
- 今亮点!拆解方三文对谈王国斌:自洽之谜,悖论之惑,与被低估的三句
- 世界关注:北溪重启前夕 欧盟提议今冬减少15%天然气用量 但面临巨大阻力
- 天天快看:培育钻石半年报盘点:中兵红箭等三家公司单季净利料创历史新高
- 重点聚焦!工信部:上半年多晶硅全国产量约36.5万吨 同比增长53.4%
- 全球热头条丨T+0变T+1!现金管理类理财产品形态改造与规模压降同步
- 【世界速看料】金梓才和他的财通智慧成长继续痴迷“猪周期”,财通基金公告踩雷地产股,究竟哪只产品存隐忧
- 全球热点!北向资金今日净买入36.78亿元
- 天天速讯:主板三连阳 重回3300上方
- 【天天新视野】指数仍将震荡反弹
- 【环球速看料】多方尚未完全发力 上升趋势或有延续空间
- 今日热讯:段光明将出任英大证券董事长
- 每日焦点!收评:沪指三连阳收复3300点 军工股掀涨停潮
- 全球今日讯!爱康将为甘孜州正斗光伏实证实验基地提供支架
- 全球信息:指数高开震荡走强 大消费表现活跃
- 环球今日讯!矿业巨头淡水河谷下调年度产量预期 铁矿石市场有望受提振
- 香港上市需要什么条件?港股主板IPO上市需要满足什么条件?
- 中国多层次资本市场主要包括哪些市场?多层次资本市场的定义
- “羲和号”首次获得三种太阳谱线轮廓
- 飞秒激光“点亮”空气形成3D影像 飞秒激光显示技术难在哪?
- 环氧乙烷:冰激凌里的“砒霜” 作口罩消毒剂却“真香”
- 溶于泪液的硅纳米针隐形眼镜面世 未来或有望用于治疗人类眼部疾病
- 为什么雄蟑螂不能吸引雄蟑螂? 蟑螂“恋爱”奥秘被科学家破译
- 清华大学固体氧化物电解池制氢系统样机开发项目通过验收
- 股票里面的pb是什么意思?股票pb计算公式是什么?
- 浮筹比例是什么意思?浮筹比例是怎么计算的?
- 中国a50指数是啥意思?a50是什么意思?
- 股票中出现XR是什么意思?股票出现XR有什么影响?
- 基金分几种类型?投资基金可以分为哪几种?
- 股票新股和次新股是什么意思?新股与次新股的区别是什么?
- 认购权证是什么意思?认购权证和认沽权证的区别是什么?
- 流动资产周转次数是什么?流动资产周转天数一般多少合适?
- 换手率怎么计算? 换手率的意义是什么?换手率高好还是低好?
- 集合竞价在什么时间进行?集合竞价规则和技巧?
- 北京证券交易所指数代码怎么看? 创业板最高指数是多少?
- 股票分批卖出手续费会增加吗?如何分批买入一只股票?
- 新手炒股适合加杠杆吗?股票加杠杆需要什么条件?
- 散户可以买中证1000股指期货吗?中证1000上市时间
- 如何判断涨停板出货和吸筹?涨停板吸筹和出货的区别
- 纳税人办理纳税申报需要什么资料?小规模不交增值税还提附加税吗?
- 小规模纳税人已经代开专票附加税如何申报?补充公积金企业所得税税前扣除吗?
- 罗马是哪国首都?罗马有多少年的历史和文化?
- 哲学专业要学什么科目? 哲学专业就业方向及前景分析
- 民生易贷借款条件 民生银行民易贷怎么样?
- 67万韩元等于人民币?67万韩元是多少人民币?
- 2022年南水北调概念股有那些? 南水北调行业上市公司名单一览
- 圣农发展上市时间 圣农发展股票代码是多少?
- 业绩超预期比亚迪热度再上升 市场占有率排第一
- 二季度全国平均招聘月薪9283元 同比上升0.89%
- 大牛股中通客车上演“天地板” 最终收于跌停价22.89元/股
- 中通客车午后闪崩上演“天地板” 中信证券罕见提示风险
- 首批创业板战配基金陆续迎来开放期 全市场共有13只创业板战略配售基金
- 中证1000衍生品利好优质小盘股 以医药等成长性较强的细分领域为主
- 退市海医下周将摘牌 年内已有46家公司退市创出历史新高
- 长短视频平台首次牵手 进一步激发影视类创作者热情
- 一个万亿级新蓝海 预制菜“黄金赛道”如何跑出好成绩?
- A股三大指数集体收涨 上证指数涨1.55%报3278.1点
- 入局中国有税零售 DFS有何竞争优势?
- 小麦价格走低 面粉价格在淡季为何不降反涨?
- 聚焦五大领域 四部门联手整治涉企违规收费专项整治行动
- 商务部:加快补齐农村商业设施短板 扩大农村电子商务覆盖面
- “雪糕界”陷入竞争“胶着” 卡拉胶究竟是什么?
- 儿童牙膏按现行法规监管可正常销售 不得标注“食品级”等词语或者有关图案
- 工信部:正在研究新能源汽车购置税优惠政策 全力保障产业链供应链稳定畅通
- 北京1亿元餐饮消费券昨起发放 当日领券需当日下单就餐
- 各地推广使用“食安封签”多是倡议 消费者普遍叫好商家却动力不足?
- 7月1日起 北京市社保月缴费基数下限为5869元
- 保险炒停售强制搭售将划红线 售前进行产品人员分级
- 未来三年乡村民宿发展定调 建立公共安全管理制度
- 天天快报!上市公司正负面新闻2022年07月20日
- 世界聚焦:上市公司重要公告集锦2022年07月20日
- 世界看点:新股申购(打新小闹钟)2022年07月20日
- 【世界速看料】固态电池技术再获突破,未来能量密度有望为三元电池数倍
- 环球热头条丨7月19日(0-24时)上海新增本土确诊病例5例
- 每日热闻!【盘前播报】建议淡化指数,积极布局运作轮动板块,围绕科创板
- 播报:滨州市技师学院骨干教师和班主任参加培训长本事
- 环球信息:新闻联播精选2022年07月19日
- 【当前独家】磷石膏“以渣定产”,工业固废有望变废为宝?
- 世界视点!一周内两次!上海核心商务区办公楼中国电信宽带断网
- 天天快资讯:国家能源局:上半年风电装机容量同比增长17.2%
- 【天天时快讯】天然气危机逼迫下 欧洲化肥巨头警告将进一步减产
- 环球快播:郑州银行与当地房管局“互怼” 预售资金监管不力谁之过?
- 今日快看!乌克兰农业部长:今年可能减少30%至60%的冬季作物播种
- 速递!【明日主题前瞻】装机量占比超85%的储能方式,“十四五”期间总投资1.6万亿元
- 世界微资讯!中国5月持续减持美国公债 持仓量降至数年低点 原因为何?
- 每日热讯!瑞银:电改推进提升发电企业回报率 光伏需求或仍维持高景气
- 热消息:澳大利亚将减少天然气出口 欧洲“气荒”局面雪上加霜
- 天天热议:一体化压铸热度升温!龙头股两个月暴涨3倍,产业链上市公司竞相布局
- 环球通讯!看谁跑得快?一众高位股集体崩跌!仍有大佬从容赚走2000多万
- 焦点!【数据看盘】北向资金甩卖两大锂电龙头 一线游资高低切换迹象明显
- 【环球新要闻】1Y存单发行利率较月初下行18bp已至2.15%,债市杠杆维持高位
- 每日消息!拜登中东行几空手而返 普京访伊朗签“世纪大单”
- 世界今日报丨美国经济衰退将以何种方式出现?瑞银给出4个衰退情景