2013-02-14 7 views
5

Ich habe den folgenden CodeWie man json_object freigibt?

#include <stdio.h> 
#include <stdlib.h> 
#include <stddef.h> 
#include <string.h> 

#include <json/json.h> 

int main(int argc, char **argv) 
{ 
     json_object *new_obj; 
     char buf[] = "{ \"foo\": \"bar\", \"foo2\": \"bar2\", \"foo3\": \"bar3\" }" 
     new_obj = json_tokener_parse(buf); 
     ..... 
     json_object_put(new_obj); 
} 

Hat der json_object_put(new_obj) frei, alle Speicher new_obj zu tun?

Antwort

3

Aus der Dokumentation:

void json_object_put (struct json_object *this) 

Decrement der Referenzzähler von json_object und frei, wenn es den Wert Null erreicht

Quelle: http://oss.metaparadigm.com/json-c/doc/html/json__object_8h.html

+2

Ich weiß das. Ich bin auf der Suche nach einer Bestätigung, dass json_object_put das meomry im Beispiel freigibt – MOHAMED

+0

Sie fragen also, wie Sie überprüfen können, dass der freie Speicher tatsächlich frei ist? Das ist eine ganz andere Frage. – djechlin

+2

Auch ich fand das eine interessante Frage. Der Name der Funktion ist unerwartet ... Ich habe kein intuitives Verständnis, dass "put" bedeutet, die Referenzzählung zu dekrementieren und wenn nötig frei zu machen. – Kolban

0

Wir brauchen nicht zu frei die Erinnerung. Eine Antwort auf diese Frage finden Sie unter this other question.

+0

Dies beantwortet nicht wirklich die Frage. Bitte erkläre in deiner Antwort *, warum man nicht "die Erinnerung freigeben muss". –

Verwandte Themen