mysql_free_result() 를 해 주지 않아도 OS 나 DB 에서 garbage collect 해 주나요?
글쓴이: cococo / 작성시간: 월, 2013/12/02 - 4:04오전
linux + mysql + c++ 로 프로그램을 작성했는데 계속 죽어서 디버그 넣고 확인해 보다가,
SELECT QUERY 를 실행한 다음 mysql_free_result() 로 select 결과를 해제해 주지 않은 걸 알게 되었습니다.
뒤늦게 넣기는 했는데... 수정하기 이전의 select 작업들은, 메모리가 해제되지 않고 남아있지 않는가 하는게 걱정됩니다.
C++ 로 컴파일한 코드에서, mysql DB에서 select 한 결과를 free 하지 않고 프로그램을 종료했을 때, 혹시 OS 혹은 DB에서 나머지 메모리를 해제해 줄까요?
아니면 인위적으로 해제해 줄 수 있는 방법이 존재할까요?
혹시 비슷한 경우를 겪으신 분이 있다면, 의견 주시면 감사하겠습니다.
이상입니다. 좋은 하루 되시기 바랍니다.
Forums:
클라이언트쪽에서 문제가 되는 것 아닌지요?
C쪽 도움말을 보니 그걸 호출 안하면 릭이 발생할 수 있는 것으로 보이기는 하는데, 클라이언트 메모리에 한한 것이 아닌지. 클라이언트에서 서버의 릭을 유도할 수 있다면 큰 문제가 되겠죠.
--
...
"클라이언트에서 서버의 릭을 유도할 수 있다면 큰 문제가 되겠죠."에 한표.
DB 서버가 그렇게 허술하지 않습니다.
mysql_free_result는 result
mysql_free_result는 result set의 memory를 free 해 줍니다. 즉, fetch 이후에 mysql_free_result를 호출하지 않는다면 memory leak이 발생합니다. 물론, client의 memory leak 입니다.
댓글 달기