您的位置:程序门 -> c/c++ -> c++ 语言



面试题!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


面试题!
发表于:2007-04-08 11:24:03 楼主
//   改正函数中的错误
char   *fun()
{
char   *p1   =   (char   *)malloc(32);
char   *p2   =   (char   *)malloc(32);
if(p1   ==   null   ¦ ¦   p1   ==   null)
return   null;
//...
delete   p2;
return   p1;
}
发表于:2007-04-08 11:28:521楼 得分:0
1.malloc和delete不能配对,
2.if(p1==null   ¦ ¦   p2==null)吧
3.如果进入if的话,如果p1分配成功,p2分配不成功,则会出现内存泄露。
发表于:2007-04-08 11:31:542楼 得分:0
malloc   和   free
new         和   delete
发表于:2007-04-08 11:52:253楼 得分:0
malloc和delete不能配对
发表于:2007-04-08 12:47:074楼 得分:0
thinkinnight(逍遥)   是全面正确答案!
发表于:2007-04-08 12:51:165楼 得分:0
//   这样改是否完全正确
char   *fun()
{
char   *p1   =   (char   *)malloc(32);
if(p1   ==   null)
return   null;

char   *p2   =   (char   *)malloc(32);
if(p2   ==   null)
{
free(p1);
return   null;
}
//...
free(p2);
return   p1;
}
发表于:2007-04-08 12:53:026楼 得分:0
en   感觉差不多
发表于:2007-04-08 13:05:447楼 得分:0
1.delete改成free
2.if改成:if(p1==null   ¦ ¦   p2==null)
3.进入if,p1,p2都分配失败,不会出现问题.若都成功,也不会出问题.若一个成功一个失败,则会出现内存泄露。
发表于:2007-04-08 13:09:118楼 得分:0
楼主后来改的应该是正确的
发表于:2007-04-08 13:12:159楼 得分:0
题少了点。。
发表于:2007-04-08 13:14:0810楼 得分:0
差不多了,还有很讨厌的一点编码规范,
一般不使用hardcode,32.而是定义一个宏。不过不算错。   :)
发表于:2007-04-08 13:54:3111楼 得分:0
要用new和free


快速检索

最新资讯
热门点击