免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1791 | 回复: 5
打印 上一主题 下一主题

[C] 编程规范,安全等相关问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-08 18:39 |只看该作者 |倒序浏览
ErrorCode GetMenuFreshTime(OUT U16 *pu16MenuFreshTime )
{
        ErrorCode         ErrorCode = ErrorNoError;
        BoxInfo        *mpBoxInfo;

//        pu16MenuFreshTime = NULL ;//这里到底需要初始化不?
       
        ErrorCode = GetBoxInfo(&mpBoxInfo);       

        if (ErrorCode != DBSM_ErrorNoError)
        {
                return ErrorCode;
        }
        else
        {
                *pu16MenuFreshTime = mpBoxInfo ->mu16MenuFreshTime;
                return ErrorNoError;
        }
       
        FreeBoxInfo(mpBoxInfo);
        return ErrorNoError;

}

今天编写一个小的功能函数的时候出现了很多问题:
1.红色部分到底需要初始话不?这个函数是用来传出值的。
2.如果函数是二级指针就是**p,那么是否(必须)在函数内申请空间并初始化。
3.这个程序是否还有其他问题。执行到else的时候会不会不执行FreeBoxInfo(mpBoxInfo);
        return ErrorNoError;这些内容,直接跳出函数了,因为有个return ErrorNoError;

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2007-11-08 18:54 |只看该作者
如果都
pu16MenuFreshTime = NULL ;
了,
那还玩个飞机

论坛徽章:
0
3 [报告]
发表于 2007-11-08 19:43 |只看该作者
感谢楼上回复,可是没有说清楚

论坛徽章:
0
4 [报告]
发表于 2007-11-09 10:20 |只看该作者
回答:
1.你的第一个return前没有对pu16MenuFreshTime赋值,所以是需要赋值的。但是你需要赋值的是*pu16MenuFreshTime ,而不是pu16MenuFreshTime。
2.如果传入参数是二级指针,如果你在函数外面已经分配空间了,应该就没有必要了吧。

论坛徽章:
0
5 [报告]
发表于 2007-11-09 11:37 |只看该作者
楼上的有道理,感谢~

论坛徽章:
0
6 [报告]
发表于 2007-11-09 13:28 |只看该作者
回答问题3:
      执行到else部分后,根本不会执行
FreeBoxInfo(mpBoxInfo);
   程序存在内存泄漏,程序对错误处理的逻辑上还存在一些问题

[ 本帖最后由 hyrish 于 2007-11-9 13:32 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP