JS_mallocは、Spidermonkeyのjavascriptタイプにメモリを割り当てるためにのみ使用されますか?
サードパーティのデータ型(JSObjectなどではない)にメモリを割り当てる必要がある場合、mallocを使用しても大丈夫ですか?
JS_mallocとCmallocの違いは何ですか?
JS_mallocは、Spidermonkeyのjavascriptタイプにメモリを割り当てるためにのみ使用されますか?
サードパーティのデータ型(JSObjectなどではない)にメモリを割り当てる必要がある場合、mallocを使用しても大丈夫ですか?
JS_mallocとCmallocの違いは何ですか?
JS_malloc
Spidermonkey自体と同じアロケータを使用することが保証されているためです。これmalloc
は、コード内のアロケータとは異なる場合があります。特に、一部の一般的なOS(Windowsなど)は、共有ライブラリごとに個別のアロケータを備えた個別のヒープをサポートしています。free
Spidermonkeyに動的にリンクしている場合、メモリ上のSpidermonkeyを呼び出すとmalloc
、コード内でクラッシュします。
したがって、オブジェクトの割り当てを自分で解除する場合は、一貫性がある限り、malloc
/free
またはJS_malloc
/のいずれかを使用できます。JS_free
どのDLLのヒープに格納するかについて特定の要件がない限り、どちらを使用するかはそれほど重要ではありません(たとえば、これらのオブジェクトの一部が動作しているときに、ある時点でSpidermonkey DLLをアンロードする予定です)。
割り当てを行っているが、Spidermonkeyが割り当て解除を行うことを期待している場合は、を使用する必要がありますJS_malloc
。
また、JS_malloc()が失敗した場合は、JS_ReportOutOfMemory(cx)などを呼び出します。これは、エラーレポーターなどで使用できます。