物理内存是计算机中真实的、有限的存储空间。它由许多存储单元组成,每个单元都有一个唯一的地址。CPU 通过这些地址来访问和存储数据。内存的逻辑模型是一个抽象的概念,用于描述程序如何与内存交互。
在这个模型中,内存被分为几个部分,如堆、栈、全局/静态存储区等。
程序通过指针或引用访问内存。
数组是连续的内存块,用于存储相同类型的元素。
数组的每个元素都有一个固定的地址,可以通过索引快速访问。
数组在内存中是紧凑存储的,所以访问速度快。栈是一种后进先出的数据结构。在内存中,栈用于存储局部变量、函数调用的上下文等。当函数调用时,相关的数据会被推入栈中;当函数返回时,这些数据会从栈中弹出。队列是一种先进先出的数据结构。队列用于存储待处理的任务或数据。在内存中,队列通常用于实现缓冲、消息传递等。环形缓冲区是一种特殊的队列,其存储空间是循环使用的。当缓冲区满时,新的数据会覆盖最旧的数据。环形缓冲区常用于音频、视频流处理等需要循环存储的场景。链表是由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。
链表不需要连续的内存空间,因此可以灵活地插入和删除节点。
链表常用于实现动态数据结构,如动态数组、图等。二叉查找树是一种特殊的二叉树,其每个节点都包含一个关键字和两个子节点。左子节点的关键字小于其父节点,右子节点的关键字大于其父节点。二叉查找树用于快速查找、插入和删除数据。