stack.h

<emscripten/stack.h> 中定义的函数允许检查有关 WebAssembly 数据堆栈(有时称为“用户堆栈”或“C 堆栈”)的信息。此数据堆栈是线性内存中包含的数据(与 VM 管理的受信任调用堆栈相反,并且对正在运行的程序不可见)。

uintptr_t emscripten_stack_get_base(void)

返回堆栈的起始地址。当堆栈上没有使用字节时,这是堆栈指针将指向的地址。

uintptr_t emscripten_stack_get_end(void)

返回堆栈的结束地址。这是堆栈指针将指向的地址,当整个堆栈都使用时。(结束地址指向的地址不是堆栈本身的一部分)。注意,堆栈向下增长,因此 emscripten_stack_get_end() 返回的地址小于 emscripten_stack_get_base()

void emscripten_stack_set_limits(void* base, void* end)

设置 emscripten_stack_get_base()emscripten_stack_get_end() 报告的内部值。这应该只被低级库使用,例如 asyncify 纤维。

uintptr_t emscripten_stack_get_current(void)

返回当前堆栈指针。

size_t emscripten_stack_get_free(void)

返回堆栈上剩余的可用字节数。这要求速度快,以便可以频繁调用它。