阅读规范后,我试图增加一些内存并执行以下操作:
(module
(table 0 anyfunc)
(memory $0 1)
(export "memory" (memory $0))
(export "f" (func $0))
(func $0 (param $0 i32) (result i32)
get_local $0
grow_memory
)
)
现在我希望如果我们输入 10,我们的页面大小是 11 的倍数,所以类似于:
(memory $0 1)
变成
(memory $0 11)
由于堆栈没有清空,我不得不添加一个返回值。现在我假设该方法如果成功则返回-1以外的其他内容,对吗?在这种情况下,我认为它有效,我应该有更多的页面。
我知道也有 JS 方式,但我更喜欢直接在 WebAssembly 中完成所有这些工作。有趣的是,我们可以从“Env”中导入诸如 malloc、free、strcopy 等 C 函数。
所以我的问题是:我增加内存的方法是否正确?我应该导入 C 风格的模块吗?grow_memory 和 realloc() 之间有什么关系,或者说区别?