
OCILob::free 함수를 호출하기 전에 다음 조건을 만족해야 합니다.
1. Large Object를 사용한 후에 OCILob::isopen 함수를 호출하여 Large Object가 여전히 열려있는지 확인합니다. 만약 열려 있지 않다면, OCILob::free 함수를 호출할 필요가 없습니다.
2. Large Object를 사용한 후에 OCILob::free 함수를 호출하기 전에 OCILob::flush 함수를 호출하여 Large Object의 버퍼를 비워줍니다.
3. Large Object를 사용한 후에 OCILob::free 함수를 호출하기 전에 OCILob::isdefinite 함수를 호출하여 Large Object가 정의되어 있는지 확인합니다. 만약 정의되어 있지 않다면, OCILob::free 함수를 호출할 필요가 없습니다.
4. Large Object를 사용한 후에 OCILob::free 함수를 호출하기 전에 OCILob::close 함수를 호출하여 Large Object를 닫아줍니다.
이러한 조건을 만족하지 못한 경우, OCILob::free 함수를 호출할 때 메모리가 해제되지 않는 문제가 발생할 수 있습니다.
예를 들어, 다음 코드를 보겠습니다.
#hostingforum.kr
c
OCILobLocator* locator = OCILobOpen(...);
// Large Object를 사용합니다.
OCILob::free(locator); // 메모리가 해제되지 않을 수 있습니다.
위 코드에서 OCILob::free 함수를 호출하기 전에 OCILob::close 함수를 호출하지 않았기 때문에 메모리가 해제되지 않을 수 있습니다.
따라서, 다음 코드를 사용해야 합니다.
#hostingforum.kr
c
OCILobLocator* locator = OCILobOpen(...);
// Large Object를 사용합니다.
OCILob::close(locator); // Large Object를 닫습니다.
OCILob::free(locator); // 메모리를 해제합니다.
2025-08-16 08:32