memcpy内存泄漏问题

feixue2588 2014-02-10 04:00:35
各位c语言大牛,今天在坛里的vc板块发了一个疑似内存泄漏的问题,也属于c语言范畴,请各位老大移步过去帮忙看看,直接回复本贴也可以,多谢了~
http://bbs.csdn.net/topics/390705325
...全文
1227 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKATE11 2014-02-10
  • 打赏
  • 举报
回复
内存泄露 !! memcpy是假象吧
feixue2588 2014-02-10
  • 打赏
  • 举报
回复
多谢各位回答!尤其是zhuobattle和jha334201553 经验证,实际情况是这样:刚分配1024*1024大小内存的时候确实是分配到虚拟内存上了,物理内存上只分配了4k。所以实际用的时候,如果是搬运小于4k,则物理内存不增加,如果大于4k再按实际需要增加物理存。 结贴
majia2011 2014-02-10
  • 打赏
  • 举报
回复
两未影射的虚址对拷,系统忽略掉了,呵呵呵
「已注销」 2014-02-10
  • 打赏
  • 举报
回复
memcpy 不会的,你任务管理器看到的应该只是当前在内存中的数据代码的总大小,那还有一部分在磁盘的pagefile里面啊,你运行函数可能将磁盘上的数据隐射到内存中导致文件增大呢,要不你把虚拟内存关掉再测测
zhuobattle 2014-02-10
  • 打赏
  • 举报
回复
引用 3 楼 feixue2588 的回复:
[quote=引用 1 楼 zhuobattle 的回复:] 程序占用的内存增加了4k?你看的是哪个内存占用?有可能是memcpy触发了虚拟内存映射到物理内存的过程,导致了物理内存涨了,这个不是内存泄漏
谢谢,我看的是当前程序.exe对应任务管理器里的“内存使用”列。 请问什么情况下会有“memcpy触发了虚拟内存映射到物理内存的过程”呢?我写的那段测试小程序就不会出现内存增加。 另外,这种情况下导致的物理内存增长为什么不算内存泄漏?系统什么时候会回收这部分内存?多谢了![/quote] 刚分配可能只是虚拟内存,你实际有数据操作时,才会映射到物理内存进行拷贝操作;你写的程序当然会有内存增加,因为你new了,你在适当的地方,比如不使用时delete [] 掉。这样当然不会内存泄漏,哪有程序不分配内存,不使用内存的。只要做好释放就OK
feixue2588 2014-02-10
  • 打赏
  • 举报
回复
引用 1 楼 zhuobattle 的回复:
程序占用的内存增加了4k?你看的是哪个内存占用?有可能是memcpy触发了虚拟内存映射到物理内存的过程,导致了物理内存涨了,这个不是内存泄漏


谢谢,我看的是当前程序.exe对应任务管理器里的“内存使用”列。

请问什么情况下会有“memcpy触发了虚拟内存映射到物理内存的过程”呢?我写的那段测试小程序就不会出现内存增加。
另外,这种情况下导致的物理内存增长为什么不算内存泄漏?系统什么时候会回收这部分内存?多谢了!
ouyh12345 2014-02-10
  • 打赏
  • 举报
回复
用工具检查,windows可以用boundchecker等
zhuobattle 2014-02-10
  • 打赏
  • 举报
回复
程序占用的内存增加了4k?你看的是哪个内存占用?有可能是memcpy触发了虚拟内存映射到物理内存的过程,导致了物理内存涨了,这个不是内存泄漏

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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