7、请指出下列程序中的错误 (12分)
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define MAX_MSG_LEN 2048
BOOL MaxMsgFlag = FALSE;
char *GetBuffer(int msg_len)
{
char *ptr=NULL;
int len =msg_len;
ptr=(char *)malloc(len);
if(ptr == NULL)
{
return NULL;
}
return ptr;
}int main(int argc, char* argv[])
{
int msg_len ;
char *pMsg;
if(MaxMsgFlag== TRUE)
{
msg_len = MAX_MSG_LEN;
}
pMsg = getBuffer(msg_len);
strcpy(pMsg,"I love this game !");
printf("%s",pMsg);
return 0;
}答案:
<1> 函数getBuffer应该判断入参msg_len是否大于0。
<2> 函数main中msg_len没有赋初值
<3> 没有判断getBuffer是否申请成功。
<4> main函数里面 未释放内存
<5> Ptr==NULL,应该改写为null==ptr; MaxMsgFlag== TRUE也要做类似修改。
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define MAX_MSG_LEN 2048
BOOL MaxMsgFlag = FALSE;
char *GetBuffer(int msg_len)
{
char *ptr=NULL;
int len =msg_len;
ptr=(char *)malloc(len);
if(ptr == NULL)
{
return NULL;
}
return ptr;
}int main(int argc, char* argv[])
{
int msg_len ;
char *pMsg;
if(MaxMsgFlag== TRUE)
{
msg_len = MAX_MSG_LEN;
}
pMsg = getBuffer(msg_len);
strcpy(pMsg,"I love this game !");
printf("%s",pMsg);
return 0;
}答案:
<1> 函数getBuffer应该判断入参msg_len是否大于0。
<2> 函数main中msg_len没有赋初值
<3> 没有判断getBuffer是否申请成功。
<4> main函数里面 未释放内存
<5> Ptr==NULL,应该改写为null==ptr; MaxMsgFlag== TRUE也要做类似修改。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货