手机内存检测.ppt

手机内存检测.ppt

ID:48225195

大小:908.00 KB

页数:29页

时间:2020-01-18

手机内存检测.ppt_第1页
手机内存检测.ppt_第2页
手机内存检测.ppt_第3页
手机内存检测.ppt_第4页
手机内存检测.ppt_第5页
资源描述:

《手机内存检测.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1内存泄漏检测2主要内容内存泄漏定义内存泄漏原因分析内存泄漏检测方法内存泄漏检测工具内存泄漏的防范讨论3内存泄漏的定义程序中的内存结构程序中内存分为堆、栈、全局/静态存储区和常量存储区.全局常量位于常量存储区.全局变量位于静态数据区.局部变量以及函数参数变量位于栈.使用new/malloc分配的内存位于堆上.……栈……代码区静态数据区高端内存区域……常量存储区堆低端内存区域常量存储区域和静态数据区域的内存在程序退出时释放栈中分配的内存在变量离开其作用域时释放堆中分配的内存必须显示的释放4内存泄漏的定义内存泄漏的定义程序中从堆中分配的内存在使用完毕后忘记释放,从而失去对该块内存的控制,导

2、致该块内存一直被占用直至程序退出。程序一直分配内存,直到程序退出才释放所有内存。内存泄漏的危害程序占用内存越来越多,使得整个系统运行速度越来越慢。糟糕者可用内存耗尽,应用程序崩溃。5内存泄漏的定义内存泄漏的分类常发性内存泄漏发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。一次性内存泄漏发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。偶发性内存泄漏发生内存泄漏的代码只会被执行一次隐式内存泄漏程序在运行过程中不停的分配内存,但是直到结束的时候

3、才释放内存6内存泄漏原因分析new出来的对象没有delete代码中没有delete的地方指针被重新赋值了,赋值前没有delete逻辑分支考虑不全。函数内部逻辑考虑不周。接口调用时序逻辑考虑不全CUDPSocket*CreateUdpSocket(conststd::string&sIpAdress,UINTnLocalAudioPort){CUDPSocket*pUdpSocket=newCUDPSocket();CInetAddressoInetAddress(sIpAddress);SOCKERRORerr=pUdpSocket->Create(&oInetAddress,nLoc

4、alAudioPort);if(SOCKET_SUCCESS!=err){//deletepUdpSocket;//pUdpSocket=0;returnNULL;}returnpUdpSocket;}内存泄漏原因分析基类析构函数非虚当基类指针指向派生类对象,delete该基类指针时派生类对象的析构不会被调用。如果派生类中使用了stl容器或者从堆中分配内存的作为成员变量,那么内存泄漏就悄无声息的发生了。7classCIavpMsg{public:CIavpMsg(){}~CIavpMsg(){printf("~CIavpMsg()r");}};classCLogMsg:publi

5、cCIavpMsg{public:CLogMsg(){}~CLogMsg(){printf("~CLogMsg()r");}public:stringm_sTime;};int_tmain(intargc,_TCHAR*argv[]){CIavpMsg*pMsg=newCLogMsg();string&sTime=((CLogMsg*)pMsg)->m_sTime;intnCapacity=sTime.capacity();printf("sTime初始内存大小:%dr",nCapacity);sTime="2010年月日:18:01";nCapacity=sTime.ca

6、pacity();printf("sTime赋值内存大小:%dr",nCapacity);constchar*pStr=sTime.c_str();deletepMsg;printf("LogMsg对象删除后m_sTime的内容:%sr",pStr);return0;}内存泄漏原因分析8内存泄漏原因分析delete一个只有声明没有定义的类为了避免C/C++头文件中包含很多的其他头文件,通常将关联到的其他类型声明一下即可,在真正使用的地方包含其类定义的头文件。如果在某个地方delete一个只有声明,而没有包含其类定义的头文件,那么该delete将不会去调用该类的析构函数。其结

7、果和基类析构非虚导致派生类的析构不被调用的后果一样。9#pragmaonceclassCIavpMsg;classCIavpMsgFactory{public://从网络收到的消息创建成一个IavpMsgCIavpMsg*DynamicCreateMsg(constchar*pMsgStream,intnStreamLen);};#include"stdafx.h"#include"iavpmsgfactory.h"int_tmain(inta

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。