Stack与Heap的区别
来源:互联网 发布:淘宝减肥药事件 编辑:程序博客网 时间:2024/05/22 09:43
栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,在编译的时候可以指定需要的Stack的大小。在编程中,例如C/C++中,所有的局部变量都是从栈中分配内存空间,实际上也不是什么分配,只是从栈顶向上用就行,在退出函数的时候,只是修改栈指针就可以把栈中的内容销毁,所以速度最快。
堆(Heap)是应用程序在运行的时候请求操作系统分配给自己内存,一般是申请/给予的过程,C/C++分别用malloc/New请求分配Heap,用free/delete销毁内存。由于从操作系统管理的内存分配所以在分配和销毁时都要占用时间,所以用堆的效率低的多!但是堆的好处是可以做的很大,C/C++对分配的Heap是不初始化的。
在Java中除了简单类型(int,char等)都是在堆中分配内存,这也是程序慢的一个主要原因。但是跟C/C++不同,Java中分配Heap内存是自动初始化的。在Java中所有的对象(包括int的wrapper Integer)都是在堆中分配的,但是这个对象的引用却是在Stack中分配。也就是说在建立一个对象时从两个地方都分配内存,在Heap中分配的内存实际建立这个对象,而在Stack中分配的内存只是一个指向这个堆对象的指针(引用)而已。
- Heap与Stack的区别
- Heap与Stack的区别
- Heap与stack的区别
- Heap与Stack的区别
- Stack与Heap的区别
- stack与heap的区别
- Heap与Stack的区别
- Stack与Heap的区别
- Heap与Stack的区别
- heap与stack的区别
- heap与stack的区别
- Heap与Stack的区别
- Stack与Heap的区别
- heap与stack的区别
- Heap与Stack的区别
- heap 与stack区别
- heap与stack区别
- stack与heap的关系与区别
- [英语阅读]憧憬利好新政股市收高
- 从select语句看Oracle数据库查询工作原理
- URL栏处理中文
- windows 2003中IE无法更改安全级别,如何解决?
- WEB专用服务器的安全设置的实战技巧
- Stack与Heap的区别
- 中国通China hand
- Topcoder_4
- Windows标准DLL编译工具
- JavaScript : HTTP Get
- 某大型企业局域网安全解决方案
- 吃馅饼 学口语
- tomcat异常处理
- DBGridEh的学习笔记