社区
C++ 语言
帖子详情
内存泄漏的疑惑(100分)
lovechen508
2006-09-04 09:09:20
现在遇到一个比较奇怪的问题。
产品在debug和release下表现出不同的内存泄漏状况。
在debug下面,内存缓慢增长。但是release下,内存泄漏则快得多。由于时间比较短,不可能全面阅读代码,所以感觉没有什么头绪。
unix环境,会不会和编译选项有关?
另外有purify工具,别人也没能跑出什么明显的bug出来。
各位有什么好的思路和建议。谢谢!
...全文
637
19
打赏
收藏
内存泄漏的疑惑(100分)
现在遇到一个比较奇怪的问题。 产品在debug和release下表现出不同的内存泄漏状况。 在debug下面,内存缓慢增长。但是release下,内存泄漏则快得多。由于时间比较短,不可能全面阅读代码,所以感觉没有什么头绪。 unix环境,会不会和编译选项有关? 另外有purify工具,别人也没能跑出什么明显的bug出来。 各位有什么好的思路和建议。谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
benjiam
2006-09-05
打赏
举报
回复
purify 在那里有下载?
tiantang3gm
2006-09-05
打赏
举报
回复
我模糊记得purify检测内存泄露的原理:
如果发生了内存分配操作,那么purify会标记该操作,如果发现内存释放就删除该标记,如果到进程结束仍然没有内存分配标记没有删除,那么就判定该标记所在地方内存泄露。
建议察看指向指针的指针的释放问题。比如list中一个node一个node释放,最后释放header
一点建议吧,祝你好运。
我曾努力和内存泄露斗争过
ps.不要把太依赖于测试,写好一个模块测试一个模块。软件设计方法的确很烦人,但是效果很好。
elson_hao
2006-09-05
打赏
举报
回复
mark
无聊客
2006-09-05
打赏
举报
回复
统一楼上,一个一个模块放开,对于一些怀疑的模块,写死代码加大调用力度,加快重现频率
lovechen508
2006-09-05
打赏
举报
回复
感谢各位的关心。
to buptwaitme2002(大漠孤鹰):
的确在压力测试暴露了问题。现在是基本是1M/min的增长速度。
to jixingzhong(瞌睡虫:选择了远方,只顾风雨兼程!):
代码的质量基本是有保障的。没有一眼就能识别的明显泄漏问题。
另外,代码采用了较多的OO技术。且不可能单步调试。断点什么的都不能用。只能用log的方式。
to tiantang3gm() :
purify GUI上的水龙头工具究竟有什么用途?同事说是系统内存分配的snapshot。不准确,但我以前的一个类似的问题就是通过该工具找出来的。有purify的专家可以提供建议么,谢谢
to cnstar9988(小星星) :
Sorry, 公司使用的是正版purify. 我没有注册码。我们都是通过NFS使用该工具。
今天扫描了一下代码,缩小了范围。c++ 代码大概一万行左右。想结合testcase进一步研究。有什么进展和大家一起讨论。谢谢大家关注。
今天在阅读代码的时候有一些感受:
如果能够通过函数名称判断函数内部是否进行了内存分配就好了,就不用进去看了
返回指针的函数如果暴露了内部状态又不希望调用者改变的话,最好返回const.否则我必须通过指针返回的东西该不该释放。也要到该函数中检查。
项目中广泛用到了异常,指针的内存释放就比较痛苦。尽量使用RAII技术和异常安全技术(例如:auto_ptr)尤为重要。谁分配谁释放的责任必须清晰明了。
以上感受不一定正确,希望能讨论一下。
BenjaminHuang
2006-09-05
打赏
举报
回复
Purify都测不出来?感觉比较奇怪。
zmzbs123
2006-09-05
打赏
举报
回复
确实比较棘手,目前帮不上,jf
cnstar9988
2006-09-05
打赏
举报
回复
有purify for linux的注册码吗?
hziee_
2006-09-05
打赏
举报
回复
purify 是什么冬冬,第一次听说。。。
xlzxlich
2006-09-05
打赏
举报
回复
把代码大段封掉,再慢慢放开,缩小范围.
OOPhaisky
2006-09-05
打赏
举报
回复
不要把设计当成细节去处理!!
现在怎么办?
......
mmosquito
2006-09-04
打赏
举报
回复
贴段代码给楼主,不过在unix下大半没法用。只能祝你好运了。
int g_debugsize = 10240;
int YourAllocHook(int nAllocType, void *pvData,
size_t nSize, int nBlockUse, long lRequest,
const unsigned char * szFileName, int nLine )
{
char *operation[] = { "", "allocating", "re-allocating", "freeing" };
char *blockType[] = { "Free", "Normal", "CRT", "Ignore", "Client" };
if ( nBlockUse == _CRT_BLOCK ) // Ignore internal C runtime library allocations
return( TRUE );
if (!( ( nAllocType > 0 ) && ( nAllocType < 4 ) ))
return true;
if (!( ( nBlockUse >= 0 ) && ( nBlockUse < 5 ) ))
return true;
if (nSize >= g_debugsize)
{
printf( "Memory in %s, line %d: %s a %d-byte '%s' block (#%ld)\n",
szFileName, nLine, operation[nAllocType], nSize,
blockType[nBlockUse], lRequest );
return( TRUE ); // Allow the memory operation to proceed
}
return TRUE;
}
_CrtSetAllocHook(YourAllocHook);
iambic
2006-09-04
打赏
举报
回复
唉,慢慢找吧,祝楼主好运。
czm1203
2006-09-04
打赏
举报
回复
一般没什么好办法。
如果没有什么辅助工具可以确定泄漏点的话,那就只能调试,一步一步的缩小范围。
重新仔细分析下逻辑上的问题了。
herman~~
2006-09-04
打赏
举报
回复
关注
IT有个圈儿
2006-09-04
打赏
举报
回复
这个一般很棘手!
公司的已经找了2天了!
jixingzhong
2006-09-04
打赏
举报
回复
整个工程逻辑上是否存在缺陷 ?
buptwaitme2002
2006-09-04
打赏
举报
回复
可能设计中有缺陷,在压力测试时出了问题
tiantang3gm
2006-09-04
打赏
举报
回复
purify都没看到 有问题。
晕~~~
Lua代码
内存泄漏
的
疑惑
1)Lua代码
内存泄漏
的
疑惑
2)一个Lua重复加载后造成的泄露问题 3)关于Addressable中计数的
疑惑
4)合并Mesh的插件推荐 这是第265篇UWA技术知识
分
享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10
分
钟,认真读完必有收获。 UWA 问答社区:answer.uwa4d.com UWA QQ群2:793972859(原群已满员) Script Q:Lua Profiler提示调用红框中函数,每次都会增加大概0.23KB的内存,且随时间一直增加,请教一
mysql多线程 内存泄露_内存泄露排查之线程泄露
基础内存泄露(Memory Leak)java中内存都是由jvm管理,垃圾回收由gc负责,所以一般情况下不会出现内存泄露问题,所以容易被大家忽略。
内存泄漏
是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为
内存泄漏
。内存泄露有时不严重且不易察觉,这样开发者就不知道存在内存泄露,需要自主观察,比较严重的时候,没有内存可以
分
配,直接oom。主要和溢出做区...
C语言中造成
内存泄漏
几种方式,C语言内存泄露很严重,如何应对?
摘要:通过介绍
内存泄漏
问题原理及检视方法,希望后续能够从编码检视环节就杜绝
内存泄漏
导致的网上问题发生。1. 前言最近部门不同产品接连出现
内存泄漏
导致的网上问题,具体表现为单板在现网运行数月以后,因为内存耗尽而导致单板复位现象。一方面,
内存泄漏
问题属于低级错误,此类问题遗漏到现网,影响很坏;另一方面,由于
内存泄漏
问题很可能导致单板运行固定时间以后就复位,只能通过批量升级才能解决,实际影响也很恶劣。同...
c语言中
内存泄漏
及解决方法,c语言
内存泄漏
严重的解决方法
摘要:通过介绍
内存泄漏
问题原理及检视方法,希望后续能够从编码检视环节就杜绝
内存泄漏
导致的网上问题发生。1. 前言最近部门不同产品接连出现
内存泄漏
导致的网上问题,具体表现为单板在现网运行数月以后,因为内存耗尽而导致单板复位现象。一方面,
内存泄漏
问题属于低级错误,此类问题遗漏到现网,影响很坏;另一方面,由于
内存泄漏
问题很可能导致单板运行固定时间以后就复位,只能通过批量升级才能解决,实际影响也很恶劣。同...
Android开发dialog内存泄露,Android中导致
内存泄漏
的竟然是它----Dialog
一.
内存泄漏
的 Bug 猛增最近在 App 进行 mokey 测试的时候检测到一些
内存泄漏
问题。在前天的测试中,楼主一瞬间收到了4个这样的 Bug 单,瞬间心理无比纠结,真有千万只羊驼向我奔来。登录页面出现
内存泄漏
??!!楼主的代码是如此的***而无懈可击,这么可能出现这么多泄漏的问题?插播什么是 Activity 泄漏:Android 中 Activity 代表一个页面,拥有一段生命周期,生...
C++ 语言
64,676
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章