这个函数是内存泄露了吗?如何写好些呢?

IceWall 2002-12-23 09:23:58
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);
}
...全文
55 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
IceWall 2002-12-24
  • 打赏
  • 举报
回复
行吧,谢谢!,结贴!
lllhaier 2002-12-23
  • 打赏
  • 举报
回复
是一本书,不过比较薄,100页左右吧。


你用个全局变量不就行了吗?搞的这么辛苦。
IceWall 2002-12-23
  • 打赏
  • 举报
回复
ralphchen(听海):
林锐的高质量C++是一本书吗?
ralphchen 2002-12-23
  • 打赏
  • 举报
回复
你返回Scr的目的何在,如果你的目的是在CArcShpShowDoc::TRAN外仍然使用这些点,那你把点的空间申请放到CArcShpShowDoc类里不是更好。关于内存的问题推荐看林锐的高质量C++代码。
wyljery 2002-12-23
  • 打赏
  • 举报
回复
或者直接建个全局嘛,大数组,现在流行这个
wyljery 2002-12-23
  • 打赏
  • 举报
回复
你应该仿照bstr(参见讲解com技术的bstr一章)的工作原理,在做了操作后在释放
IceWall 2002-12-23
  • 打赏
  • 举报
回复
可是这样不行大哥阿,释放后再返回就是空值啦?
那究竟该到哪去释放Scr指针呢?
manbug 2002-12-23
  • 打赏
  • 举报
回复
建议将Scr设置成全局变量
manbug 2002-12-23
  • 打赏
  • 举报
回复
错了,错了,哈哈,释放了就不能返回了
manbug 2002-12-23
  • 打赏
  • 举报
回复
晕死,当然有啦,

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

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧