内存数据的正确表示方式是什么?二维列表如何绘制内存存储示意图
二维列表内存结构示意图相关说明
常用搜索关键词
你要找的这类示意图可以用以下关键词搜索:
- 内存布局示意图 / 内存存储结构图
- 多维数组内存分配示意图
- 嵌套列表内存模型图
如果是针对Python这类语言的场景,还可以加上关键词「Python对象引用示意图」,因为不同语言的列表/数组存储逻辑有明显差异。
bar = [[7,2,6],[3,4,8]]的两种常见存储逻辑表示
1. 静态类型语言的连续内存存储(以C语言为代表)
这类场景下二维数组是整块申请的连续内存,默认按行优先存储:
- 整个
bar数组共占用6个连续的内存存储单元 - 单元内的值按顺序依次为
7、2、6、3、4、8 - 逻辑上前三个单元为第一行
[7,2,6],后三个单元为第二行[3,4,8]
2. 动态类型语言的引用存储(以Python为代表)
Python中的列表是引用类型,嵌套列表的外层列表实际存储的是内层列表的引用地址:
- 最外层的
bar列表对象包含2个存储单元,分别存储第一个子列表[7,2,6]的内存地址、第二个子列表[3,4,8]的内存地址 - 两个子列表各自占用独立的连续内存空间,每个子列表分别有3个存储单元,存储对应数值的对象引用
- 做简化示意图时可以直接把引用替换为对应数值,省略地址指向箭头,只要标注是简化版存储逻辑即可。
绘制规范
- 每个内存存储单元用独立方框表示,方框内标注存储的内容(数值/内存地址/引用)
- 连续内存的单元可以按顺序并排排列,引用关系用箭头从存储引用的单元指向实际存储数据的单元
- 可在方框旁标注变量名、内存偏移地址等信息,方便和代码逻辑对应。
内容的提问来源于stack exchange,提问作者sesrkuse
相关产品推荐
相关产品推荐

