CPoint* CArcShpShowDoc::TRAN(ARCPOINT* Point,int k)
{
CPoint* Scr=(CPoint *)malloc(sizeof(CPoint)*k);for (int i=0;i<k;i++){
Scr[i].x =(Point[i].dX -3)*lScaleX;
Scr[i].y =(stcBox.dYmax-5)*lScaleY;
}
DPtoLP((HDC)pDC,Scr,l);
return Scr;
free(Scr);
}

解决方案 »

  1.   

    晕死,当然有啦,最后三行应该这样
    DPtoLP((HDC)pDC,Scr,l);
    free(Scr);//这才是释放了
    return Scr;//程序返回,如果上面的一行面之行下面,就永远也释放不了内存
      

  2.   

    可是这样不行大哥阿,释放后再返回就是空值啦?
    那究竟该到哪去释放Scr指针呢?
      

  3.   

    你应该仿照bstr(参见讲解com技术的bstr一章)的工作原理,在做了操作后在释放
      

  4.   

    你返回Scr的目的何在,如果你的目的是在CArcShpShowDoc::TRAN外仍然使用这些点,那你把点的空间申请放到CArcShpShowDoc类里不是更好。关于内存的问题推荐看林锐的高质量C++代码。
      

  5.   

    ralphchen(听海):
    林锐的高质量C++是一本书吗?