Web Assembly 中的栈大小和堆大小有区别吗?
Is there a difference between the stack size and heap size in web assembly?
我目前正在学习 Web 汇编,使用 C++ 和 emscripten 工具链。我了解内存如何与 C++ 中的堆栈和堆一起工作,以及该 Web 程序集使用最大大小为 4GB(或浏览器允许的任何大小)的连续内存缓冲区。在 Web 程序集的 C++ 中,在堆栈上分配数据是否有最大大小,它是否不同于最大内存大小。例如,我可以在堆栈上分配我在 C++ 中的所有数据,并能够使用最大内存,还是应该在堆上分配我的数据,并自己管理它(使用智能指针)?
我认为总内存(TOTAL_MEMORY 选项)包括堆栈和堆 space。
您有 TOTAL_STACK= 选项,允许更改为堆栈保留的大小。默认 5MB。
关于内存使用,你应该简单地做你在常规 C++ 代码中会做的事情:有时堆栈上的东西更好,有时使用智能指针或其他托管堆内存策略更好,有时只是手动 new/delete .
我目前正在学习 Web 汇编,使用 C++ 和 emscripten 工具链。我了解内存如何与 C++ 中的堆栈和堆一起工作,以及该 Web 程序集使用最大大小为 4GB(或浏览器允许的任何大小)的连续内存缓冲区。在 Web 程序集的 C++ 中,在堆栈上分配数据是否有最大大小,它是否不同于最大内存大小。例如,我可以在堆栈上分配我在 C++ 中的所有数据,并能够使用最大内存,还是应该在堆上分配我的数据,并自己管理它(使用智能指针)?
我认为总内存(TOTAL_MEMORY 选项)包括堆栈和堆 space。
您有 TOTAL_STACK= 选项,允许更改为堆栈保留的大小。默认 5MB。
关于内存使用,你应该简单地做你在常规 C++ 代码中会做的事情:有时堆栈上的东西更好,有时使用智能指针或其他托管堆内存策略更好,有时只是手动 new/delete .