Docs Menu
Docs Home
/ / /
C ドライバー
/ /

bson_t の有効期間

項目一覧

  • bson_t の出力パラメータ

A bson_t には、そのデータが直接含まれる場合や、ヒープ割り当てメモリへのポインターが含まれている場合もあります。既存の bson_t の上書き または、スタック割り当てされた bson_t を許可する がスコープ外にGo と、メモリ リークが発生する可能性があります。A bson_t は常に bson_detry で破棄する必要があります。

A bson_t 出力パラメータとして使用されるポインターは、新しい bson_t の有効な上書き可能なストレージを指している必要があります また、次のいずれかである必要があります。

  • bson_t の非初期化ストレージ。

  • ゼロから初期化された bson_t オブジェクト。

  • A bson_t BSON_INITIALIZERで初期化されたオブジェクト。

  • A bson_t bson_new で作成されていないオブジェクト bson_delete によって破棄された 。

これはスタック上に存在する可能性があります。

bson_t stack_doc = BSON_INITIALIZER;
example_get_doc (&stack_doc);
bson_destroy (&stack_doc);

または、ヒープ上で次のことを行います。

bson_t *heap_doc = bson_malloc (sizeof (bson_t));
example_get_doc (heap_doc);
bson_destroy (heap_doc);
bson_free (heap_doc);

bson_detry の 省略 いずれの場合もメモリリークが発生する可能性があります。

警告

bson_t を渡す bson_new から取得されたポインター 出力パラメーターとして bson_t のリークが発生する 構造体。

bson_t *heap_doc = bson_new ();
example_get_doc (heap_doc);
bson_destroy (heap_doc); // Leaks the `bson_t` struct!

戻る

JSON