[数据结构]内存中的堆栈和数据结构中的堆栈

内存中的堆栈和数据结构堆栈不是一个概念,可以说内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构, 其中栈是线性结构, 堆是非线性结构

内存中的堆栈

内存空间在逻辑上分为三部分:代码区、静态数据区和动态数据区,动态数据区又分为栈区和堆区。

  • 代码区
    存储方法体的二进制代码。

  • 静态数据区
    存储全局变量、静态变量、常量,常量包括final修饰的常量和String常量。系统自动分配和回收。

  • 栈区
    存储运行方法的形参、局部变量、返回值。由系统自动分配和回收。

    int method(int a)
    {
    	int b;
    	return temp
    }
    

    栈中存储参数a、局部变量b、返回值temp。

  • 堆区
    new一个对象的引用或地址存储在栈区,指向该对象存储在堆区中的真实数据。由程序员分配和回收(Java中由JVM虚拟机的垃圾回收机制自动回收)。

    Class Student {
    	int num; 
    	int age;
    } 
    Student stu = new Student()

    在堆中分配一块可以存放Student类型变量大小的区域, 在栈中使用变量stu指向该区域, 里面存放的内容是该对空间的地址或者是引用.

数据结构中的堆栈

  • 栈:是一种连续存储的数据结构,特点是存储的数据后进先出。
  • 堆:是一棵完全二叉树结构,特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。

参考

  1. 内存中的堆和栈是什么
  2. 内存中的堆栈和数据结构堆栈区别

猜你喜欢

转载自blog.csdn.net/weixin_40996518/article/details/105974071