数据结构vs 内存结构

1.内存结构

从程序的角度看,内存结构还包括以下几个部分,对应的硬件有磁盘/Cache/DRAM/寄存器

内存结构和对应的硬件关系

txt 复制代码
// 代码段的硬件存储
程序文件: program.exe (在磁盘上)
↓ 程序启动时加载
内存中的代码段 (在DRAM中)
↓ 执行时缓存
CPU缓存 (L1/L2/L3)
↓ 当前执行的指令
CPU指令寄存器

2.数据结构

数据结构是计算机存储、组织数据的方式,选择合适的数据结构可以大大提高程序的效率。

txt 复制代码
数据结构
├── 线性数据结构
│   ├── 数组 (Array)
│   ├── 链表 (Linked List)
│   ├── 栈 (Stack)
│   ├── 队列 (Queue)
│   └── 哈希表 (Hash Table)
├── 树形数据结构
│   ├── 二叉树 (Binary Tree)
│   ├── 二叉搜索树 (BST)
│   ├── 平衡树 (AVL, 红黑树)
│   ├── 堆 (Heap)
│   ├── B树/B+树
│   └── Trie树
├── 图形数据结构
│   ├── 邻接矩阵
│   ├── 邻接表
│   ├── 边列表
│   └── 十字链表
└── 特殊数据结构
    ├── 并查集 (Union-Find)
    ├── 布隆过滤器 (Bloom Filter)
    ├── 跳表 (Skip List)
    └── 位图 (Bitmap)

3.注意内存结构与数据结构中的堆和栈

1.堆(Heap)与内存堆(Heap Memory)

栈数据结构可以在不同内存 区域实现,栈内存是内存管理中的一个区域,用于存储函数调用信息和局部变量,函数调用和返回遵循LIFO原则。
栈数据结构是一种抽象数据类型,遵循LIFO(后进先出)原则。

相关推荐
小宇子2B8 小时前
四、x86-64 的简化:段机制基本退场,FS/GS 为什么留下
操作系统
小宇子2B10 小时前
二、保护模式的段:选择子、GDT,与那张 64 位的段描述符
操作系统
CSharp精选营2 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
小宇子2B4 天前
三、内核入口 el0_svc / entry_SYSCALL_64 的汇编做了什么——从异常向量到 C 函数
操作系统
小宇子2B4 天前
四、从 write(1, "hello", 5) 到 ksys_write() —— sys_call_table 怎么路由的
操作系统
小宇子2B4 天前
一、printf("hello") 怎么变成 write(1, "hello", 5) —— libc 的 stdout 缓冲机制
操作系统
刘马想放假6 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠6 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
小宇子2B9 天前
一个 pthread_mutex_lock() 到底锁了什么——从用户态 CAS 到内核调度
操作系统
小宇子2B11 天前
多线程 malloc 为什么会变慢——glibc 的 arena 到 bins 全景
操作系统