Skip to content

duk_realloc()

1.0.0 memory

プロトタイプ

c
void *duk_realloc(duk_context *ctx, void *ptr, duk_size_t size);

スタック

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

要約

duk_realloc_raw() と同様ですが、要求を満たすためにガベージコレクションを起動させることがあります。しかし、割り当てられたメモリ自体は、自動的にガベージコレクションされません。割り当てられたサイズが前回の割り当てから拡張された場合、新たに割り当てられたバイトは自動的にゼロにされず、任意のゴミを含む可能性があります。

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

c
void *buf = duk_alloc(ctx, 1024);
if (buf) {
    void *buf2 = duk_realloc(ctx, 2048);
    if (!buf2) {
        printf("failed to reallocate, 'buf' still valid\n");
    } else {
        printf("reallocate successful, 'buf2' now valid\n");
    }
}

参照

duk_realloc_raw