[json-c] simple generator json ojbect

Program Lang./C++ 2017. 1. 9. 21:57

1. 개요 

이번에는 object를 만들어서 string 및 파일로 출력하는 예제를 만들어 본다.


2. 테스트 코드 

앞장에서 주어진 string을 object 객체로 parsing했다면 이 장에서는 각 객체를 하나의 객체로 만드는 과정이다.

앞장의 역이라고 보면 된다.



3. 실행 결과 

{"name":"heesoon.kim","student":false,"age":41,"height":172.19999999999999,"interestings":["c","c++","javascript","phython"],"author-details":{"name":"heesoon.kim","Number of Posts":10}}


4. Check Point 

마지막에 호출한 json_object_put()에 주의할 필요가 있다. json-c library는 객체 생성을 위해서 HEAP 영역에 메모리를 할당한다. 이 할당한 메모리를 관리하기 위해서 reference count를 내부적으로 가지고 있다. json object들의 생성함수를 호출하면 reference count는 '1'로 초기화하고 json_object_get()을 호출하면 reference count가 1 증가, json_object_put()함수를 호출하면 reference count를 1 감소하는 구조이다. 또한 json_object_put()함수는 reference count가 '0'이 되면 객체를 위해서 할당한 HEAP 영역 메모리를 모두 해재한다.


따라서 마지막에 json_object_put()함수를 모두 호출하여 객체 생성을 위해서 할당한 메모리를 모두 해제하도록 하였다. 앞 장에서 전문가가 json-c library를 잘못 사용하면 메모리 누수가 발생할 수 있다는 의미를 알 것 같다. json_object_put()과 json_object_get()함수의 짝이 맞지 않거나 json_ojbect_put()함수를 객체 생성 후에 호출하지 않으면 모두 메모리가 쌓여 있을 것으로 보입니다.

'Program Lang. > C++' 카테고리의 다른 글

message queue implementation by c++ STL  (0) 2017.04.06
enable_shared_from_this 정리  (0) 2017.01.12
[json-c] simple parsing example  (0) 2017.01.09
std::function 정리  (0) 2017.01.02
unique_ptr, shared_ptr 읽히기  (0) 2016.12.30
: