JS_malloc是否仅用于为蜘蛛侠中的javascript类型分配内存?
如果我需要为第三方数据类型(不是JSObject或类似类型)分配内存,那么使用malloc可以吗?
JS_malloc和C malloc有什么区别?
发布于 2011-05-25 07:09:40
JS_malloc之所以存在,是因为它保证使用与蜘蛛侠本身相同的分配器,这可能与代码中的malloc不一样。特别是,一些流行的OSes (例如,Windows)支持具有每个共享库的单独分配器的单独堆;如果您动态地链接到蜘蛛侠,那么在内存中调用free,您的代码中的malloc就会崩溃。
因此,如果要自己释放对象,只要一致,就可以使用malloc/free或JS_malloc/JS_free。使用哪个DLL并不重要,除非您有特定的要求,您希望它驻留在哪个DLL堆上(例如,您计划在其中一些对象处于活动状态时,在某个时候卸载Spidermonkey )。
如果您正在执行分配,但希望蜘蛛侠执行去分配,则需要使用JS_malloc。
发布于 2011-10-04 01:24:03
此外,如果JS_malloc()失败,它会调用JS_ReportOutOfMemory(cx)或类似的,这可以由错误报告器等使用。
https://stackoverflow.com/questions/6119949
复制相似问题