델파이 JSON OBJECT,ARRAY 메모리 초기화 어떻게하나요? ㅠㅠ

조회수 1297회

else if (FN = 'getPet') then begin Ctxt.OutContent := StringToUTF8(DM.getPet(UTF8DecodeToUnicodeString(Ctxt.InContent),FN).ToString); Ctxt.OutContentType := JSON_CONTENT_TYPE; result := 200; end

현재 소스는 다음과같이 DM(TDataModule) 쪽에서 각 api별 function으로 되어있고 Main의 process 에서 주소를 파싱하여 해당 펑션의 result값을 TJSONObject형식으로 받게 되어있습니다. 문제는 각 api의 호출마다 메모리량이 일정수준씩 계속 증가만되고 free가 안되는거 같습니다 DM쪽에서 TJSONObject와 TJSONARRAY 혹은 TJSONBOOL이나 NUMBER와 같은 객체를 create하고 따로 free는 하지않습니다. 해도 에러납니다. result로 response값을 보내고

objFind := TJSONObject.Create; (소스) result.addpair(objfind); objfind.Owned := True;

Owned를 True로 해도 메모리는 여전히 줄어들지 않습니다. 혹시 어떻게 해야될까요 ㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 제가 질문을 제대로 못한걸까요.... 알 수 없는 사용자 2018.12.27 15:21
  • objFind.Free; 하세요 Owned 을 설정하였으므로 Free하면 자식들도 다 정리가 됩니다. 정영훈 2018.12.27 23:24
  • free도 해보았지만 제가 설계를 잘못한건지 에러가 날때가 있고 안날때가 있습니다 ㅠㅠ 알 수 없는 사용자 2019.1.2 16:21
  • var에 TJSONObject나 TJSONArray를 선언만 하고 Create없이 사용해보세요. 저도 이거 때문에 골머리 썩었는데 생성하지않고 그냥 쓰니까 해결되네요. 디버깅할때 주소값 보시면 새로운 값이 들어갈때 주소값이 바뀌는 걸로 봐서 자동으로 생성되는거 같습니다. Create하고 새값을 넣으면 2개가 생성되는데 free는 최근주소값만 초기화해서 메모리가 계속 증가되는 것으로 보입니다. 저는 10.3버전 기준입니다. 알 수 없는 사용자 2019.11.26 13:34

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)