CArray的问题

forestfire 2010-10-18 10:31:50
我将问题简单示例一下, CArray a ; a.setsize(0,4000);,请问当a是一个局部变量的时候,不进行其他的操作是否存在内存泄露?? 在我自定义的CArray里面只有添加操作(假定没有越界,即setsize()以后的大小足够用),那么在多线程程序里面可不可以不加锁????急需详细的答案,谢谢各位有心人了。
...全文
162 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
forestfire 2010-10-22
  • 打赏
  • 举报
回复
只是在调试的时候,出现了内存越界的错误
grf9527 2010-10-21
  • 打赏
  • 举报
回复
放心,不会泄露,只是你需要明确是否需要加锁,这个你说了算。
muzizongheng 2010-10-21
  • 打赏
  • 举报
回复
第一, 没有内存泄漏。
第二, 需要/不需要加锁得看应用了, 按你所说的这个CArray是局部变量, 如果只有线程使用没必要加锁,还是看你是否跨线程使用了。
forestfire 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 chenjj4003 的回复:]
不能使用Copy,最好使用Clone;
[/Quote]
我不知道你说的是哪个CArray,我用的是MFC的copy,我查看了它的方法,没有clone,你说的那个CArray中的copy和clone方法有什么区别呢?说不定问题的关键就在这里。非常感谢你的回答。
S_S_Ge 2010-10-20
  • 打赏
  • 举报
回复
delete一下
forestfire 2010-10-20
  • 打赏
  • 举报
回复
谁速度帮我解决,分都给他,谢谢呀
forestfire 2010-10-20
  • 打赏
  • 举报
回复
CArray<Share, Share&>* tmTheRest = new CArray<Share, Share&>;
tmTheRest->SetSize(0,5000);
tmTheRest->Copy(m_AllRest);

tmTheRest->RemoveAll();
delete tmTheRest;
请问这样子释放内存会出错吗? RemoveAll会不会导致delete出错呢???????
chenjj4003 2010-10-20
  • 打赏
  • 举报
回复
不能使用Copy,最好使用Clone;
forestfire 2010-10-20
  • 打赏
  • 举报
回复
不要考虑加锁的问题,程序在delete的时候出错了,并且我把tmTheRest 该成一个变量以后,函数结束的时候出错了,可能是在释放变量内存的时候出的错
Sou2012 2010-10-20
  • 打赏
  • 举报
回复
要加锁吧。
forestfire 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 machh 的回复:]
引用 5 楼 forestfire 的回复:
CArray<Share, Share&amp;>* tmTheRest = new CArray<Share, Share&amp;>;
tmTheRest->SetSize(0,5000);
tmTheRest->Copy(m_AllRest);

tmTheRest->RemoveAll();
delete tmThe……
[/Quote]
但是如果copy的时候 m_AllRest的量非常大呢,例如有1000,000个数据呢
lcyw 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 forestfire 的回复:]
CArray<Share, Share&>* tmTheRest = new CArray<Share, Share&>;
tmTheRest->SetSize(0,5000);
tmTheRest->Copy(m_AllRest);

tmTheRest->RemoveAll();
delete tmTheRest;
请问这样子释放内存会出错吗? RemoveAll会……
[/Quote]

这个不会出错, RemoveAll只是清空里面的元素,
Eleven 2010-10-19
  • 打赏
  • 举报
回复
注意同步。。。
founderfang 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jhayumu 的回复:]
需要加锁
[/Quote]
同意
简单生活FF 2010-10-18
  • 打赏
  • 举报
回复
CArray 应该不会内存泄露吧,以前一直用这个集合类,但是你这个问题我也不清楚
Up

16,472

社区成员

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

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

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