zoukankan      html  css  js  c++  java
  • c语言中静态区,栈,堆的理解

    对于程序员,一般来说,我们可以简单的理解为内存分为三个部分:静态区,栈,堆

    很多书没有把把堆和栈解释清楚,导致初学者总是分不清楚。

    其实堆栈就是栈,而不是堆。

    堆的英文是heap;栈的英文是stack,也翻译为堆栈。堆和栈都有自己的特性,这里先不做讨论。

    陈正冲老师在此处打了一个比方:一层教学楼,可能有外语教室,允许外语系学生和老师进入;还可能有数学教师,允许数学系学生和老师进入;还可能有校长办公室,允许校长进入。

    同样,内存也是这样,内存的三个部分,不是所有的东西都能存进去的

    静态区:保存自动全局变量和static变量(包括static全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。

    栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。

    堆:由malloc系列函数或new操作符分配的内存。其生命周期由free或delete决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。

  • 相关阅读:
    全局变量-静态变量
    System.Web.Optimization 找不到引用,教你如何解决?
    CSS text-decoration 属性
    HTML 5 <span> 标签
    [VS]
    C# 条件表达式max=(a>b)?a:b;含义
    vs 2017 Integrated Security 为sspi 含义
    Visual studio 利用Nuget 控制台安装已经下载好的插件
    使用INTERSECT运算符
    Oracle DB 使用子查询来解决查询
  • 原文地址:https://www.cnblogs.com/haore147/p/3647317.html
Copyright © 2011-2022 走看看