zoukankan      html  css  js  c++  java
  • 堆与栈的区别

    堆栈的空间分配:

      栈(操作系统):由操作系统自动分配释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。

      堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。

    堆栈的缓存方式:

      栈使用的是一级缓存,他们通常都是 被调用时处于存储空间中,调用完毕立即释放

      堆存放在二级缓存中,生命周期由虚拟机的垃圾回收算法决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速读相对慢一些

    效率比较:

      栈:由系统自动分配,速度较快,但是程序员无法控住

      堆:是由新分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来方便

    存储内容:

      栈:在函数调用时,在大多数的C编辑器中,参数是由右往左入栈的,然后是函数中得局部变量(注意,静态变量是不入栈的)

        当本次调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向函数的返回地址,也就是主函数中的下一条指令的地址,程序由该点继续执行

      堆:一般是在堆的头部用一个字节存放堆的大小,堆中的具体内容由程序员安排

  • 相关阅读:
    jenkins持续集成
    对pm2对研究
    模板⽅法模式
    python configparser模块
    Python正则表达式
    Python读写文件之换行符
    Python字符串
    Python字典
    Python列表
    爬虫 urllib,requests,lxml,bs4 小结
  • 原文地址:https://www.cnblogs.com/yizhixiaowenzi/p/14601303.html
Copyright © 2011-2022 走看看