JS基础知识(二十一):堆和栈
作者:互联网
操作系统的堆栈——两种内存管理方式
内存
内存:由于寄存器只能存放少量的数据,因此很多数据会存储在内存中,CPU指挥寄存器和内存交换数据。
程序内存分配:程序运行时,操作系统会给他分配一段内存,用来存储程序和运行时产生的数据。这段内存有起始地址和结束地址
堆和栈
堆:程序运行过程中,对于动态的内存占用请求(新建对象、malloc),系统会从预先分配好的那段内存中,划分一部分内存给用户,从起始地址开始划分(实际上,起始地址处会有一段静态数据(全局执行环境?),这里忽略)。
这种由于用户主动请求而划分出来的内存区域,叫做堆。它由起始地址开始,由低位向高位增长,不会自动消失,需要主动释放或者由垃圾回收机制回收。(使用new创建对象时申请内存)
栈:由于函数运行而临时占用的内存区域。函数中定义的局部变量、参数,系统分配给栈的空间是有限的内存的物理结构:内存地址 + 数据
变量实质:一块内存空间
变量声明:int a,把内存空间命名为a,a = 1,把数值存入内存空间
变量使用: cout<<a,转化为,输出内存中的某个地址的值
图片来自博客:图片水印上的地址
数据结构的堆栈队列——三种常用的数据结构
堆:利用完全二叉树的结构来维护的一维数组
栈:先进后出的数据结构
队列:先进先出的数据结构
参考博客:https://www.cnblogs.com/Stephen-Qin/p/11841624.html
参考博客:https://blog.csdn.net/li_l_il/article/details/90313118(里面有例子)
标签:JS,起始,二十一,内存空间,博客,基础知识,地址,内存,数据结构 来源: https://blog.csdn.net/weixin_44706267/article/details/121331256