操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

检查 NULL 和不必要的分配

2006-10-9 网友评论 0 条 点击进入论坛

Static void CMyApp_HowManyMistakesCanIMakeInOneFunction(
CmyApp *pme,const AECHAR * pszError)
{
AECHAR * pMsg;
int i;

i = (WSTRLEN(pszError) + 1) * sizeof(AECHAR);
pMsg = (AECHAR *)MALLOC(i);
WSTRCPY(pMsg,pszError);
ISHELL_MessageBox(pme->a.m_pIShell, pMsg,...);
FREE(pMsg);
}
此代码有什么问题?

此函数中有几个非常严重的错误。 它包括:
无法检查确保 pszError 在使用前为 NULL
无法检查 MALLOC 的 NULL 返回值
不需要时分配 pMsg。 “pszError”值可以直接传递给 ISHELL_MessageBox
所有这些错误都非常严重。 简言之,它们将一个可用于显示消息框的简单函数转换成一个失效的函数。

BREW™ 应用程序必须检查内存分配例程的返回值 NULL、返回类实例的值等。

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46732 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail