用GDI+的资源如何释放

用GDI+的资源怎么释放
C/C++ code

void RoleObj::RoleInfo()
{
    int nrightorleft;
    m_Direction==right?nrightorleft=20:nrightorleft=30;

    //头上的角色名
    Font font(L"Arial", 10);
    PointF pointf(m_nPosX+20+nrightorleft,m_nPosY);
    SolidBrush brush(Color::Black);
    Graphics gp(m_ParentWnd->m_memDC);
    gp.DrawString(m_strRoleObjName.AllocSysString(),m_strRoleObjName.GetLength(),&font,pointf,&brush);
    
    //脚下的阴影
    //Graphics g(m_ParentWnd->m_memDC);
    Color color(128,0,0,0);
    SolidBrush solibrush(color);
    gp.FillEllipse(&solibrush,m_nPosX+nrightorleft,m_nPosY+85,50,20);
}



先声明上面的函数是循环运行的,每次运行程序后内存就一直已4K的增长量上升,但把上面那段函数全部删除后就没有上升的情况了,于是我就知道是上面的资源没有释放,但是GDI+怎么释放资源呢 MSDN没有说可以用C++释放啊 ,貌似只有C#才能释放吧,那咋办,,,,求解。。

------解决方案--------------------
m_strRoleObjName.AllocSysString()

要释放