Menu Docs

bson_t Lifetimes

A bson_t pode conter seus dados diretamente ou pode conter ponteiros para memória alocada por heap. Substituindo um bson_t existente ou permitindo um bson_t alocado na pilha sair Go do pode causar um vazamento de memória. A bson_t deve sempre ser destruído com bson_destroy.

A bson_t o ponteiro 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:

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);

Omitir bson_destroy em ambos os casos pode causar vazamentos de memória.

Aviso

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

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