The function setAttribute of IXMLDOMElementPtr generate a memory leak
- CXmlDoc is my XML Wrapper class
 - m_pXmlCur is a member of type 
MSXML2::IXMLDOMElementPtr - I'm using 
#import "MSXML3.dll" named_guids 
Here my code :
const int iSize = 10000000;
char *pc = (char*) malloc (iSize+1);
memset (pc, 0x00, iSize+1);
memset (pc, 65, iSize);
//pXmlDoc->SetAttributeVal(_T("Params") , pc);
pXmlDoc->SetAttributeVal2(_T("Params")  , pc);
free (pc);  
With this methodes :
void CXmlDoc::SetAttributeVal(CString AttrName, CString Val)
{
    // Method 1 : does not work
    COleVariant cov = Val;
    _ASSERTE(m_pXmlCur != NULL);
    m_pXmlCur->setAttribute(AttrName.AllocSysString(), cov);
    cov.Clear();
}  
I tried also this :
void CXmlDoc::SetAttributeVal2(CString AttrName, const char* Val)
{
    // Method 2 : does not work
    BSTR bstr = SysAllocString(_bstr_t(Val).GetBSTR());   //modify memory leak
    CComVariant varText(bstr);
    BSTR bstrName =SysAllocString(_bstr_t(AttrName).GetBSTR());
    HRESULT hr = m_pXmlCur->setAttribute(bstrName, varText);
    
    SysFreeString(bstr);
    bstr = NULL;
    SysFreeString(bstrName);
    bstrName = NULL;
    // Method 3 : does not work
    //COleVariant cov = Val;
    //_ASSERTE(m_pXmlCur != NULL);
    //m_pXmlCur->setAttribute(AttrName.AllocSysString(), cov);
    //cov.Clear();
}  
My program start with 30Mo and at each pass (creation and destruction of the class using my CXmlDoc class) I Leak 20MB => 30Mo, 50Mo, 70Mo, ...
what is wrong here ?