堆和栈的区别

原创 2006年05月24日 10:34:00

堆:heap是大家共有的空间,分全局堆和局部堆。
  全局堆就是所有没有分配的空间
  局部堆就是你分配的空间
  堆在操作系统对进程初始化的时候分配
  运行过程中你也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏
  堆里面一般放的是静态数据比如static的数据和字符串常量什么的,资源加载后一般也放在堆里面
  一个进程的所有线程共有这些堆,所以对堆的操作要考虑同步和互斥的问题
  你的程序里面编译后所有的数据段都是堆的一部分
  堆的基址应该是加载在DS寄存器上的(这点俺不太肯定,但是汇编里面应该这样)

栈:stack是每个线程独有的,保存其运行状态和局部自动变量的
  栈在线程开始的时候初始化,每个线程的栈互相独立,因此,栈是thread safe的
  每个C++对象的数据成员也存在在栈中
  每个函数都有自己的栈
  栈被用来在函数之间传递参数
  操作系统在切换线程的时候会自动的切换栈,就是切换SS/ESP寄存器
  栈空间不需要你在高级语言里面显式的分配和释放

C#中堆和栈的区别分析

一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈...
  • Andeewu
  • Andeewu
  • 2013年08月07日 19:06
  • 2029

堆和栈的概念和区别

在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分:       Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存...
  • pt666
  • pt666
  • 2017年04月27日 19:06
  • 1328

Java 堆和栈的区别

1、概述在Java中,内存分为两种,一种是栈内存,另一种就是堆内存。2、堆内存1.什么是堆内存? 堆内存是是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建...
  • u011546655
  • u011546655
  • 2016年08月10日 12:59
  • 5153

Java中的基础----堆与栈的介绍、区别

堆和栈都是Java中常用的存储结构,都是内存中存放数据的地方。 栈:基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量...
  • Emira_J
  • Emira_J
  • 2016年04月24日 11:16
  • 15358

单片机全局变量 局部变量 堆与栈 的区别

单片机全局变量 局部变量 堆与栈 的区别 局部变量空间,就是堆栈空间,也就是栈空间。 从局部变量声明的时候,它就在堆栈空间了,而不是调用函数的时候,才让它入栈的。 定义一个局部变...
  • zsh2011
  • zsh2011
  • 2013年04月21日 20:07
  • 1456

编程_堆和栈的区别

本文简单介绍了堆和栈的区别。
  • cc214042
  • cc214042
  • 2016年10月03日 18:19
  • 1178

iOS中堆和栈的区别

objective-c 对象所占内存总是分配在“堆空间”,并且堆内存是由你释放的,即release。 栈是由编译器管理自动释放的,在方法中(函数体)定义的变量通常在栈内。 1.栈区(sta...
  • WallaceWang_
  • WallaceWang_
  • 2017年05月21日 10:53
  • 308

什么叫栈?什么叫堆?堆与栈的联系与区别

原文: http://www.dz3w.com/mcu/clanguage/9228.html 什么叫栈?什么叫堆?堆与栈的联系与区别 一、预备知识—程序的内存分配 一个由c/C++...
  • chj90220
  • chj90220
  • 2013年01月23日 20:07
  • 896

堆栈,堆栈,堆和栈的区别

非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— ...
  • FrankieWang008
  • FrankieWang008
  • 2014年05月19日 13:55
  • 2172

让你彻底明白JAVA中堆与栈的区别

简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量...
  • c_z_w
  • c_z_w
  • 2017年01月09日 12:08
  • 3165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:堆和栈的区别
举报原因:
原因补充:

(最多只允许输入30个字)