Docs Menu
Docs Home
/ /

bson_t Vidas

A bson_t puede contener sus datos directamente o punteros a memoria asignada al montón. Sobrescribir un bson_t existente o permitir que un bson_t asignado a la pila quede fuera de alcance puede causar una fuga de memoria. Un bson_t siempre debe destruirse con bson_destroy.

Un puntero bson_t utilizado como parámetro de salida debe apuntar a un almacenamiento sobrescribible válido para un nuevo bson_t que debe ser uno de los siguientes:

  • Almacenamiento no inicializado para un bson_t.

  • Un objeto bson_t inicializado en cero.

  • Un objeto bson_t inicializado con BSON_INITIALIZER.

  • Un objeto bson_t no creado con bson_new que fue destruido con bson_destroy.

Esto puede estar en la pila:

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

O en el montón:

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 en cualquier caso puede provocar pérdidas de memoria.

Advertencia

Pasar un puntero bson_t obtenido de bson_new como parámetro de salida dará como resultado una pérdida de la estructura bson_t.

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

Volver

JSON

En esta página