15.分配内存失败的考查

来源:互联网 发布:淘宝零食店怎么开 邮费 编辑:程序博客网 时间:2024/05/20 11:50

void Test( void )

{

 char *str = (char *)malloc(100);

   strcpy( str, "hello" );

 free( str );

   str = NULL; 

}

答:malloc后,应判断 *p是否NULL

 

这个题目自身有问题,深层次思考:

出题人原意,free(str)后,用str = NULL杜绝野指针,但是这种写法过于教科书化,离开这个函数,str都不能使用了,

还搞个str=NULL,不需要;

在C++中,如果使用new,更不需要,参考《常见错误61: 内存分配失败校验----读书笔记《C++ gotchas》》,

标准的new运算符在分配失败时,抛出一个bad_alloc类型的异常。在任何情况下,校验标准形式new运算符返回结果

都不能起到检测错误的功效。

0 0
原创粉丝点击