Skip to content

duk_alloc()

1.0.0 memory

プロトタイプ

c
void *duk_alloc(duk_context *ctx, duk_size_t size);

スタック

(バリュースタックに影響なし)

概要

duk_alloc_raw() と同様ですが、要求を満たすためにガベージコレクションを起動させることがあります。しかし、割り当てられたメモリ自体は自動的にガベージコレクションされません。ガベージコレクションの後でも、割り当て要求は失敗することがあり、その場合は NULL が返されます。割り当てられたメモリは自動的にゼロにされないので、任意のゴミを含む可能性があります。

duk_alloc() で割り当てられたメモリは、duk_free() または duk_free_raw() で解放することができます。

c
/* Although duk_alloc() triggers a GC if necessary, it can still fail to
 * allocate the desired amount of memory.  Caller must check for NULL
 * (however, if allocation size is 0, a NULL may be returned even in
 * a success case).
 */
void *buf = duk_alloc(ctx, 1024);
if (buf) {
    printf("allocation successful: %p\n", buf);
} else {
    printf("allocation failed\n");
}

参照

  • duk_alloc_raw