项目中看到的先人的代码.不是很明白.难道这是可以的吗.
项目中看到的先人的代码.不是很明白.难道这是可以的吗.
先人是我现在使用平台的创始人,这样的代码规范吗?有什么样的危险吗?
欢迎大家讨论.
//The original code has been replaced by me.
char * GetMsgBuf();
main()
{
char * pMsgBuf;
char * sTextBody;
...
sTextBody = (char *)malloc(100*sizeof(char));
...
pMsgBuf = GetMsgBuf();
if(pMsgBuf)
{
strncpy(sTextBody,pMsgBuf,MAX_LEN);
}
...
}
char * GetMsgBuf()
{
char MsgData[100];
memset(MsgData, 0x00, MAX_MSG_DATA * sizeof(cahr));
//process MsgData, for example:
strcpy(MsgData, "How are you ");
..
return MsgData;
}
[解决办法]
...行了兄弟,这个代码很危险。。。他返回了一个数组指针。。。这是不被允许的。
这是一个低级错误。
[解决办法]
这代码很不好,至少有一个大问题和两个小问题。
大问题是GetMsgBuf返回局部数组,很危险的行为。
小问题包括不必要地违反“谁申请,谁放弃”的原则,魔述数字跟宏定义混用,这些都会导致代码难于维护。
不过楼主也乱用词,什么“先人”,“先人”这个词是乱用的吗?