找回密码
 注册
关于网站域名变更的通知
查看: 149|回复: 2
打印 上一主题 下一主题

栈、堆和静态区

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-6 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
对于程序员,一般来说,我们可以简单地理解为内存分为3个部分:堆、栈和静态区;很多人其实不太理解这些概念,也分不清楚,其实堆栈就是栈,而不是堆。堆的英文是heap,栈的英文是stack,通常也叫堆栈。堆和栈都有自己的特性。我们打个比方,一层教学楼,可能有外语教室,允许外语系学生和老师进入;还可能有数学教室,允许数学系学生和老师进入;还可能有校长办公室,允许校长进入。同样,内存也是这样,内存的3个部分,不是所有的东西都能存进去的。+ r" a# a) k0 x
:由malloc系列函数或new操作符分配的内存。其生命周期由free或delete决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错* z0 |" J" d* m2 a  _8 z6 m
:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内存也会自动被销毁。其特点是效率高,但空间大小有限。5 x6 {9 F" L" C; r
静态区:保存自动全局变量和static变量(包括static全局和局部变量)。静态区的内容在整个程序的生命周期内都存在,由编译器在编译的时候分配。: h9 F/ [6 U( G  {: ^

该用户从未签到

2#
发表于 2021-12-6 13:06 | 只看该作者
栈上的内容只在函数的范围内存在
  • TA的每日心情

    2019-11-19 15:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-12-6 13:06 | 只看该作者
    堆是由malloc系列函数或new操作符分配的内存
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-8 09:55 , Processed in 0.093750 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表