你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
【3.21签到】每日问答——Heap与stack的差别
[复制链接]
苏柚
提问时间:2016-3-21 08:31 /
赞
0
收藏
0
评论
103
分享
发布时间:2016-3-21 08:31
请先
登录
后回复
103个回答
creep
回答时间:2016-3-21 08:39:37
a0a.1 32b0c
赞
0
评论
回复
支持
反对
巧子儿
回答时间:2016-3-21 09:05:09
a0a.1 32b0c
heap内存由程序员分配释放,stack内存由编译器自动分配释放
赞
1
评论
回复
支持
1
反对
0
yuazhang
回答时间:2016-3-21 10:37:30
a0a.1 32b0c
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
堆和栈的区别:
1、管理方式不同;
2、空间大小不同;
3、能否产生碎片不同;
4、生长方向不同;
5、分配方式不同;
6、分配效率不同;
赞
0
评论
回复
支持
反对
荣丰宇
回答时间:2016-3-21 10:26:49
a0a.1 32b0c
heap是堆,stack是栈;
stack的空间由系统自动分配和释放,heap的空间手动分配和释放;
stack空间有限,heap有很大的自由存储区;
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符;
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。
赞
0
评论
回复
支持
反对
yanhaijian
回答时间:2016-3-21 08:39:41
a1024a.1 32b0c
天天签到。
赞
0
评论
回复
支持
反对
zhangdaijin
回答时间:2016-3-21 08:40:35
a0a.1 32b0c
签到先
赞
0
评论
回复
支持
反对
jundao721
回答时间:2016-3-21 08:47:44
a0a.1 32b0c
Heap内存由程序员分配释放,stack内存由编译器自动分配释放
赞
0
评论
回复
支持
反对
hello!
回答时间:2016-3-21 08:48:47
a1024a.1 32b0c
赞
0
评论
回复
支持
反对
wujianwei3980-5
回答时间:2016-3-21 08:50:08
a1024a.1 32b0c
签到。。。。。。。。。。。。。。。
赞
0
评论
回复
支持
反对
zhoupxa
回答时间:2016-3-21 08:54:04
a0a.1 32b0c
签到签到
堆与栈,一言难尽啊
赞
0
评论
回复
支持
反对
弋江浪子
回答时间:2016-3-21 08:55:40
a0a.1 32b0c
【3.21签到】领金币
赞
0
评论
回复
支持
反对
不晓得10
回答时间:2016-3-21 09:03:48
a0a.1 32b0c
签到
赞
0
评论
回复
支持
反对
adlu
回答时间:2016-3-21 09:04:54
a1024a.1 32b0c
签到。。。
赞
0
评论
回复
支持
反对
disheng4688
回答时间:2016-3-21 09:05:47
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
hjf2002
回答时间:2016-3-21 09:05:47
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
烟花绽放
回答时间:2016-3-21 09:06:51
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
Mandelbrot_Set
回答时间:2016-3-21 09:07:08
a0a.1 32b0c
QIANDAO
赞
0
评论
回复
支持
反对
1
2
3
4
5
6
7
/ 7 页
下一页
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
堆和栈的区别:
1、管理方式不同;
2、空间大小不同;
3、能否产生碎片不同;
4、生长方向不同;
5、分配方式不同;
6、分配效率不同;
stack的空间由系统自动分配和释放,heap的空间手动分配和释放;
stack空间有限,heap有很大的自由存储区;
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符;
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。
堆与栈,一言难尽啊