博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序中堆和栈的区别
阅读量:4507 次
发布时间:2019-06-08

本文共 330 字,大约阅读时间需要 1 分钟。

栈是系统为一个程序所分配的一块固定的区域,函数的局部变量都存在这

堆允许程序在运行时动态地申请某个大小的内存空间。

使用malloc等内存分配函数获取内存即是从堆中分配内存,而在一个函数体中例如定义一个数组之类的操作是从栈中分配内存

所能申请的大小区别:

栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。 

堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时, 
会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。通过delete来释放。

转载于:https://www.cnblogs.com/hugoPKU/p/3737873.html

你可能感兴趣的文章
linux webrtc浏览器,WebRTC 浏览器支持
查看>>
[译文] 小提示:伪元素是子元素,吧。
查看>>
我答"编程为什么不用中文?": 中文API的意义和探索
查看>>
Swoft 2.0.5 更新,新增高效秒级定时任务、异常管理组件
查看>>
版本对比 两个版本号 一样长度
查看>>
计算百分比
查看>>
js 乘除算法 浮点 精度解决办法
查看>>
sql server 2012 链接服务器不能链接sql server 2000的解决方案 ,
查看>>
sqlserver2005版本的mdf文件,还没有log文件,
查看>>
错误“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”解决方案
查看>>
System x 服务器制作ServerGuide U盘安装Windows Server 2008 操作系统 --不格式化盘
查看>>
java面试
查看>>
前端常见跨域解决方案(全)
查看>>
单点登录(Single Sign On)解决方案
查看>>
umi---className设置多个样式
查看>>
网页包抓取工具Fiddler工具简单设置
查看>>
周总结报告
查看>>
Selecting Courses POJ - 2239(我是沙雕吧 按时间点建边 || 匹配水题)
查看>>
Win+R指令(2)
查看>>
codeforces 578c - weekness and poorness - 三分
查看>>