SW 개발

[C] Jansson 사용시 json_decref() 호출하는기준

. . . 2018. 5. 14. 14:16
반응형

C에서의 json library

c에서 Jansson lib 를 써보니 생각보다 api 가 잘되어있고 안정적으로 동작하였다. 만약 임베디드C 환경에서 json 을 쓰려면 jansson 을 사용하길 추천한다.

  • 공식홈페이지 : http://www.digip.org/jansson/

Jansson 에서 json_decref()의 역할?

간단하게 이야기해서 free 와 같은 역할이라고 생각하면될것 같다.

할당된 인스턴스를 해제하는 역할이다.

혹은... 강제로 쓰고있는 인스턴스를 다른곳에서 해제하지 못하게 하는 lock 과 같은역할을 하기도한다.

json_decref() 호출하는 기준

공식 api 문서를 살펴보면 다음과 같은 내용이 있다.

  • 공식API 문서 : http://jansson.readthedocs.io/en/2.8/apiref.html

각 api 에는 해당 함수가 "new reference" 혹은 "Borrowed reference" 인지 표시가 되어있다.

new reference api

borrowed reference

즉, new reference api 일때 json_decref() 를 호출하면된다.

만약, Borrowed reference api 를 쓰면서 다른곳에서 json_decref() 를 호출하게될경우 그 함수호출은 동작을 보장할수없으므로, Borrowed reference ap 를 쓸때 안전하게 쓰려면, json_incref() 를 강제로 호출후에 사용하고 사용이 끝나면 json_decref() 를 쓰도록한다.

반응형