Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver C
/ /

bson_t Lifetimes

Um bson_t pode conter seus dados diretamente ou pode conter ponteiros para memória alocada por heap. Substituir um bson_t existente ou permitir que um bson_t alocado na pilha saia do escopo pode causar um vazamento de memória. Um bson_t deve sempre ser destruído com bson_destroy.

Um ponteiro bson_t usado como parâmetro de saída deve ponto para um armazenamento substituível válido para um novo bson_t, que deve ser um dos seguintes:

  • Armazenamento não inicializado para um bson_t.

  • Um objeto bson_t inicializado com zero.

  • Um objeto bson_t inicializado BSON_INITIALIZER com.

  • Um objeto bson_t não criado com bson_new que foi destruído com bson_destroy.

Isso pode estar na pilha:

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

Ou no montão:

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

A omissão de bson_destroy em ambos os casos pode causar vazamentos de memória.

Aviso

Passar um ponteiro bson_t obtido de bson_new como parâmetro de saída resultará em um vazamento da estrutura bson_t.

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

Voltar

JSON

Nesta página