首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >WebAssembly >WebAssembly 的线性内存模型是怎样的?

WebAssembly 的线性内存模型是怎样的?

词条归属:WebAssembly

1. 一块可增长的连续内存

WebAssembly 模块使用一块连续的线性内存(linear memory)作为主要数据存储区,以字节为单位寻址。模块可以声明内存的初始页数和最大页数,运行时在需要时按页(通常每页 64 KB)动态增长,但不会超过设定的上限。

2. 内存安全与边界约束

所有对内存的访问都会经过边界检查,越界读写会触发陷阱(trap)而非破坏其他内存区域。这一机制是 WebAssembly 沙箱安全性的基础,确保一个模块无法破坏宿主或其他模块的数据。

3. 3.0 版本引入的多内存与 64 位地址空间

核心规范 3.0 版本对内存模型做了重要扩展:

  • 64 位地址空间(Memory64):内存和表的地址类型可使用 i64,理论上将可用地址空间从 4 GB 扩展到 16 EB(在 Web 环境中仍受 16 GB 上限约束),尤其有利于非 Web 生态处理超大规模数据
  • 多内存(Multiple Memories):单个模块可声明并直接访问多个内存对象,支持在内存之间直接复制数据,为静态链接、安全隔离(分离私有数据)、缓冲和插桩等场景提供了新的可能
相关文章
WebAssembly 是 Deno 的好搭档
备受期待的 Deno 项目 终于发布了 1.0 版本!Deno 是由 Node.js 的创始人 Ryan Dahl 创建的,旨在解决他所说的“我为 Node.js 感到遗憾的十件事”。
深度学习与Python
2020-08-28
3K0
嵌入式C语言:为啥内存是线性分布的?
在嵌入式C语言中,内存呈线性分布。一是由其物理特性决定,存储单元按顺序排列形成线性地址空间。二是为简化内存管理,常采用实存储器策略。这种线性分布便于编程、提升性能,也让调试内存错误更加容易。
byte轻骑兵
2026-01-21
2510
非线性表中的树、堆是干嘛用的 ?其数据结构是怎样的 ?
笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算法和方便以后复习。
夜尽天明
2019-07-23
1.2K0
OpenHarmony内核源码分析(内存管理篇) | 虚拟内存全景图是怎样的
内存一开始一张白纸,这些extern就是给它画大界线的,从哪到哪是属于什么段。这些值大小取决实际项目内存条的大小,不同的内存条,地址肯定会不一样,所以必须由外部提供,鸿蒙内核采用了Linux的段管理方式。结合上图对比以下的解释自行理解下位置。
小帅聊鸿蒙
2025-03-08
5420
Linux 内核中,多线程栈空间模型是怎样的?
作者:invalid s 链接:https://www.zhihu.com/question/323415592/answer/676335264 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
用户8639654
2021-07-22
2.8K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券