bson_t Lifetimes
Nesta página
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 do escopo pode causar um vazamento de memória. A bson_t deve sempre ser destruído com bson_destroy.
Parâmetros de saída bson_t
A bson_t o ponteiro usado como parâmetro de saída deve apontar 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 bson_t inicializado com zero evento.
A bson_t objeto inicializado com
BSON_INITIALIZER
.A bson_t objeto 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);
Omitir bson_destroy em ambos os casos pode causar vazamentos de memória.