内存泄露代码(C/C++)

bpgkvnym1205 2012-12-11 10:25:40


要用不同测试方法来测试内存泄露,但是现在需要以上三个不同的C代码,有高人帮我编遍(C/C++语言)。谢了.
...全文
466 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
w5447242 2013-01-18
  • 打赏
  • 举报
回复
学习了,谢谢。
liangminghui 2013-01-09
  • 打赏
  • 举报
回复
_CrtDumpMemoryLeaks
scream7 2012-12-20
  • 打赏
  • 举报
回复
关于第三个不是很懂啊,进程结束后,堆空间也应该由OS负责回收的啊,那和第二种情况有不同么?求解释
wk_sky 2012-12-20
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资……
看到了专业的点评!受教了!
jimette 2012-12-19
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资……
学习
jimette 2012-12-19
  • 打赏
  • 举报
回复
——crtdbg 有现成的函数 不可用么?
bpgkvnym1205 2012-12-16
  • 打赏
  • 举报
回复
引用 5 楼 openXMPP 的回复:
1) for ( int i = 0 ; i < 10000 ; i ++ ) { A *a = new A(); usleep(1000*1000); delete a; } 2) vector<A*> memoryList; memoryList.clear(); for……
这个程序的(2)的a有释放么?
aleyuan 2012-12-12
  • 打赏
  • 举报
回复
引用 3 楼 bpgkvnym1205 的回复:
引用 1 楼 mac_will 的回复:C/C++ code?123456789101.for(int i = 0; i < 10000; ++i){ int *p = new int; * p = 1; Sleep(1000);// 1000*10000秒够长时了吧 <img src="https://forum.csdn.net/PointForum/ui/scr……
退出才释放,应该要用数组或什么东西存一下申请到的地址吧
bpgkvnym1205 2012-12-12
  • 打赏
  • 举报
回复
引用 1 楼 mac_will 的回复:
C/C++ code?123456789101.for(int i = 0; i < 10000; ++i){ int *p = new int; * p = 1; Sleep(1000);// 1000*10000秒够长时了吧 <img src="https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001……
第二个要怎么才能让最后离开时候才释放呢?把delete放到for循环外面么?一直new p会叠加么?
bpgkvnym1205 2012-12-12
  • 打赏
  • 举报
回复
引用 1 楼 mac_will 的回复:
C/C++ code?123456789101.for(int i = 0; i < 10000; ++i){ int *p = new int; * p = 1; Sleep(1000);// 1000*10000秒够长时了吧 <img src="https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001……
好的谢了,我再看看··还有Sleep(1000);是1000ms,只是一秒哈···
derekrose 2012-12-12
  • 打赏
  • 举报
回复
c++前两个用class就可以了,一个手动调用析构,一个自动调用,第三个用指针申请然后就不delete不就ok了 新手乱讲别轻信
bpgkvnym1205 2012-12-12
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资……
恩,我就是要学习检测的方法。。所以想要三个不同泄露的代码。
赵4老师 2012-12-12
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
zhuyf87 2012-12-12
  • 打赏
  • 举报
回复
检测内存泄露不容易。 制造内存泄露还不简单?-_- 楼主应该自己先试试。
乔巴好萌 2012-12-12
  • 打赏
  • 举报
回复
1) for ( int i = 0 ; i < 10000 ; i ++ ) { A *a = new A(); usleep(1000*1000); delete a; } 2) vector<A*> memoryList; memoryList.clear(); for ( int i = 0 ; i < 10000; i ++ ) { A *a = new A(); ASSERT(a != 0); memoryList.push_back(a); usleep(1000*1000); } int listSize = memoryList.size(); for ( int i = 0 ; i < listSize ; i ++ ) { A *buffer = memoryList[i]; delete buffer; }
will_g 2012-12-11
  • 打赏
  • 举报
回复

1.
for(int i = 0; i < 10000; ++i)
{
  int *p = new int;
  * p = 1;
  Sleep(1000);// 1000*10000秒够长时了吧 
  delete p;
}

2和3就不写了

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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