几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » 软件测试 » 内存泄漏
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2007-01-24, 10:47 PM   #1
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 如果您要使用 MFC,则全局运算符 new 将在内存耗尽时引发一个异常。

如果您要使用 MFC,则全局运算符 new 将在内存耗尽时引发一个异常。

当您使用 C++ 运算符 new 时,事情开始变得更加有趣。例如,如果您要使用 MFC,则全局运算符 new 将在内存耗尽时引发一个异常。这意味着您不能执行以下操作:

int *ptr1;
int *ptr2;
ptr1 = new int[10];
ptr2 = new int[10]; // WRONG!!!!
如果第二次内存分配引发异常,则第一次分配的内存将泄漏。如果您的代码嵌入到将要长期运行的服务或应用程序中,则这些泄漏会累积起来。

只是捕捉异常是不够的,您的异常处理代码还必须是正确的。不要掉到下面这个诱人的陷阱中:

int *ptr1;
int *ptr2;
try
{
ptr1 = new int[10];
ptr2 = new int[10];
}
catch (CMemoryException *ex)
{
delete [] ptr1; // WRONG!!!
delete [] ptr2; // WRONG!!!
}
如果第一次内存分配引发了异常,您将捕捉该异常,但要删除一个未初始化的指针。如果您足够幸运,这将导致即时访问冲突和崩溃。更有可能的是,它将导致堆损坏,从而造成数据损坏和/或在将来难以调试的崩溃。尽力初始化下列变量是值得的:

int *ptr1 = 0;
int *ptr2 = 0;
try
{
ptr1 = new int[10];
ptr2 = new int[10];
}
catch (CMemoryException *ex)
{
delete [] ptr1;
delete [] ptr2;
}
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]

此帖于 2007-01-24 10:49 PM 被 huangyhg 编辑.
huangyhg离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
旧 2007-01-24, 10:50 PM   #2
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 回复: 如果您要使用 MFC,则全局运算符 new 将在内存耗尽时引发一个异常。

小结

如果您要编写可靠的代码,则至关重要的一点是从一开始就考虑如何处理异常事件。您不能事后再考虑对异常事件的处理。在考虑此类事件时,错误处理是一个关键的方面。

错误处理很难正确执行。尽管本文只是粗浅地讨论了这一问题,但其中介绍的原则奠定了一个强大的基础。请记住以下要点:

•在设计应用程序(或 API)时,应预先考虑您喜欢的错误处理范例。

•在使用 API 时,应了解它的错误处理范例。

•如果您处于存在多个错误处理范例的情况下,请警惕可能造成混乱的根源。

•总是检查返回状态。

•总是检查内存分配。



如果您执行了上述所有操作,就能够编写出可靠的应用程序。
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
huangyhg离线中   回复时引用此帖
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 07:05 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多