你这个问得太笼统了。简单说来堆是指一个较大的程序运行空间,程序(应用程序,OS)通过类似malloc函数申请分配一段可用的空间,而这段空间怎么用具体看程序自身。栈是个较小的空间,属于FILO(先进后出)的数据结构,主要用于函数调用时候的临时变量的存放,如果函数A调用了函数B,那么函数A的变量会在栈底,函数B的变量会在上面一点,函数return后,B的变量先退出,然后才是A。
在嵌入式系统中,堆一般就是SDRAM/DDR对应的空间,但除去系统文件,OS的部分,栈一般由运行的程序动态开辟,也在这个空间内。
堆栈是栈,用于保存自动变量和参数;
堆,用于保存new 和malloc这些自定义的内存变量;
还有全局静态区用于保存全局和静态变量;
字符常量区,用于保存字符串;
以及代码区,用于保存程序的二进制代码;
啥叫堆?啥叫栈
堆(数据结构):堆可以被看成是一棵树,如:堆排序;栈(数据结构):一种先进后出的数据结构。
什么是堆栈
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。2.4申请效率的比较:栈由系统自动分配,速度较快。但...
C语言中的栈和堆是什么?
1、计算机中的内存分为两部分:一部分是栈(stack,也称堆栈),另一部分是堆(heap)。2、 栈,可以看作是一摞卡片,最上面的卡片表示程序的当前作用域,这往往就是当前正在执行的函数。3、堆,一段完全独立于当前函数或者栈帧的内存区。如果一个函数中声明了一些变量,而且希望当这个函数完成时其中...
为什么要把堆和栈区分?
在计算机中,堆和栈是两种不同的内存管理方式,它们的使用场景和实现方法不同,有各自的优缺点。将堆和栈区分是为了便于处理不同种类的数据,下面详细介绍:1.堆的概念:堆是内存中一部分不连续的区域,由程序员手动分配和释放内存,称为动态内存分配。在堆中分配内存使用的是malloc和free等函数。堆的...
什么是堆?什么是栈啊?
堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把...
什么是堆栈~~~
堆(heap)上分配的内存,系统不释放,而且是动态分配的。栈(stack)上分配的内存系统会自动释放,它是静态分配的。运行时栈叫堆栈。栈的分配是从内存的高地址向低地址分配的,而堆则相反。由malloc或new分配的内存都是从heap上分配的内存,从heap上分配的内存必须有程序员自己释放,用free来释放,否...
内存堆和栈的区别
1、内存堆:是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。2、栈:是一种运算受限的线性表。二、特点不同 1、内存堆:允许程序在运行时动态地申请某个大小的内存空间。2、栈:定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。三、...
请简单通俗易懂的解释一下在Java中什么叫堆 什么叫栈 谢谢
什么堆什么栈都是一样的,基本作用也一样。java中可以认为,栈用来存放局部变量的。public void fun(){ int i=0; \/\/i 是一个局部变量,存放在栈里面的 Object obj = new Objec(); \/\/obj 是一个对象应用,同样也是一个局部变量,存放在站里面的,但是obj指向的对象,在存在堆中 } ...
什么是堆和栈啊?
那么:堆是指由操作系统管理分配、由应用程序请求的内存,具有运行时分配(动态分配)的特点。栈是操作系统维护的上面说的“栈”,不过是特指,通常每个线程分配一个,函数调用时用到的参数和返回地址通常存放在上面(当然也有不这样做的语言,比如老Fortran),也用来存放函数局部变量。也是动态分配。
堆(heap)和栈(Stack)的区别是什么?为什么平时都把堆栈放在一起讲?
1、堆:是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。2、栈:又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。二、特点不同 1、堆:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。2、栈...