关于堆栈
博客专区 > yintao 的博客 > 博客详情
关于堆栈
yintao 发表于5年前
关于堆栈
  • 发表于 5年前
  • 阅读 18
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

堆栈的区别体现在两个层面:

一。操作系统方面
1.堆区:由用户自己分配与释放内存的区
2.栈区:由编译器自动分配内存的区,一般是局部变量,函数参数

注:除了上述两个区,还有静态区(全局变量,静态变量),字符串常量区(字符串常量)。

    这些都是内存中的区,这里复习一下:

    一个由c/C++编译的程序占用的内存分为以下几个部分
    1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
    2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
    3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
    4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
    5、程序代码区—存放函数体的二进制代码。

二。数据结构方面
1.堆:以数组存储的完全二叉树。若为最大堆则,子节点的值不大于父节点,最小堆则不小于。
2.栈:先进后出的顺序表。

标签: c&c++
共有 人打赏支持
粉丝 5
博文 54
码字总数 45783
×
yintao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: