博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Stack and Heap 堆和栈的区别
阅读量:6529 次
发布时间:2019-06-24

本文共 401 字,大约阅读时间需要 1 分钟。

 

在和计算机内存打交道时,我们一定会碰到堆和栈,这两个东西很容易搞混,那么现在就来梳理一下二者的关系。

栈是用来静态分配内存的而堆是动态分配内存的,它们都是存在于计算机内存之中。

栈的分配是在程序编译的时候完成的,直接存储在内存中,接触内存很快。栈是后进先出的顺序,最后被申请的块最先被释放,这样就很容易跟踪到栈,释放栈的过程简单到仅仅是移动下指针就能完成。

堆的分配是在程序运行时完成的,分配速度较为缓慢,但是堆的可用空间非常的大。堆中的元素相互之间没有关联,各自都可以被任何时候随机访问。我们可以任何时候申请和释放一块内存,这样会使得我们很难随时随地追踪到堆中某块位置被分配了还是被释放了。

当你知道在编译前需要分配多少数据时且数据量不是很大时可以使用栈。如果不知道在运行时需要多少数据那么就该使用堆。

在多线程的程序里,每个线程都有其自己独立的栈,它们都共享一个堆。栈是面向线程的而堆是面向进程的。

转载地址:http://yzqbo.baihongyu.com/

你可能感兴趣的文章
PHPcms怎么调用二级栏目
查看>>
Conditional特性
查看>>
djangoform详解
查看>>
用Cookie和Session实现用户登录 函数
查看>>
作业十一 总结
查看>>
22个值得收藏的Android开源代码-UI篇
查看>>
关于结果论的管理方式的一些想法
查看>>
全新做一个自己的模板步骤是?应参考那些文档?
查看>>
Java Tcp协议socket编程学习
查看>>
MySQL常用SQL总结
查看>>
scala学习之路一
查看>>
MyEclipse10.0构建maven web项目
查看>>
错误: 无法将文件“obj\Debug\Web.dll”复制到“bin\Web.dll”。对路径“bin\Web.dll”的访问被拒绝...
查看>>
[题解]小X的液体混合
查看>>
C++流的streambuf详解及TCP流的实现
查看>>
软件体系结构风格
查看>>
js监测设备类型【安卓,ios,苹果微信,电脑pc】
查看>>
C#文件和文件夹操作
查看>>
2-管理Audio焦点(Managing Audio Playback)
查看>>
C# --- 静态与非静态方法比较(转载)
查看>>