우선, 제 홈페이지를 찾아주셔서 감사드린다는 인사 먼저.
아무도 오지 않는 것 같아, 때로는 서버를 열고 있다는 것이 괜히 전기세만 나가는 것이 아닌가 싶다는... ^^;
누메가의 바운즈 체커는 예전에 저도 ^^; 심심해서 한번 설치해 본 적이 있는데요.
제가 손댈 수 없는 부분의 누수현상까지 보고를 해서 그 이후로 그냥 접었지요. 상당한 장점일 수 있지만... 때로는 프로그래머의 완벽하고자 하는 심리를 불편하게 만들기도 하니까요. 비록 내가 만든 부분은 아니지만, 자꾸만 저곳에서 메모리가 새고 있다고 보고 하니까...
MSXML에서 제공하는 함수를 그대로 호출했는데도 메모리 누수를 보고한다면, 그 부분은 최정희 님이 어찌할 수 없는 부분입니다. 그것을 만든 MS 쪽 팀에게 문의를 하는 수밖에 없겠지요. 음... MSXML의 버전을 높이는 것도 좋은 방법일 수 있겠네요. 현재 Office를 설치하면 MSXML 5.0 버전이 설치되고, SQL Server 2005나 VS.NET 2005를 설치하면 MSXML 6.0 버전이 설치가 됩니다. (해당 인스턴스에 대한 ProgID가 틀리므로 소스코드가 약간 수정되어야 하겠지만.)
BSTR, BSTR *, VARIANT, VARIANT *에 대해서는 방법이 없습니다.
http://www.sysnet.pe.kr/2/0/51
위의 규칙에 따라서 해주는 수밖에 없지요.
물론, _variant_t, _bstr_t 또는 CComPtr, CComQIPtr 등을 적절하게 사용하는 것도 도움이 될 수 있습니다.
참... BSTR이 결국 wchar_t *라는 거 아시죠? 결국 C/C++ 포인터이므로, 해제를 2번 하거나 해제를 해주지 않는 경우 문제가 발생할 수 있겠지요.
별로 좋은 답변은 아니지만. ^^; 도움이 되시길 바랍니다.
(다행히(!)... ^^; 그렇게 솔직한 발언을 서슴없이 하시다니. ^^)