2

JS_mallocは、Spidermonkeyのjavascriptタイプにメモリを割り当てるためにのみ使用されますか?

サードパーティのデータ型(JSObjectなどではない)にメモリを割り当てる必要がある場合、mallocを使用しても大丈夫ですか?

JS_mallocとCmallocの違いは何ですか?

4

2 に答える 2

2

JS_mallocSpidermonkey自体と同じアロケータを使用することが保証されているためです。これmallocは、コード内のアロケータとは異なる場合があります。特に、一部の一般的なOS(Windowsなど)は、共有ライブラリごとに個別のアロケータを備えた個別のヒープをサポートしています。freeSpidermonkeyに動的にリンクしている場合、メモリ上のSpidermonkeyを呼び出すとmalloc、コード内でクラッシュします。

したがって、オブジェクトの割り当てを自分で解除する場合は、一貫性がある限り、malloc/freeまたはJS_malloc/のいずれかを使用できます。JS_freeどのDLLのヒープに格納するかについて特定の要件がない限り、どちらを使用するかはそれほど重要ではありません(たとえば、これらのオブジェクトの一部が動作しているときに、ある時点でSpidermonkey DLLをアンロードする予定です)。

割り当てを行っているが、Spidermonkeyが割り当て解除を行うことを期待している場合は、を使用する必要がありますJS_malloc

于 2011-05-25T07:09:40.440 に答える
1

また、JS_malloc()が失敗した場合は、JS_ReportOutOfMemory(cx)などを呼び出します。これは、エラーレポーターなどで使用できます。

于 2011-10-04T01:24:03.423 に答える