此函数的错误处理是否有问题?具体来说,我猜这两行:
if (!src || !nodeCopy)
return NULL;
一次检查两个指针是否正确?
我将程序发送给老师,他说错误处理在某些功能中是错误的,例如。
该代码用C 编写
Node * node_copy(const Node * src) {
Node *nodeCopy;
nodeCopy = (Node*) malloc (sizeof (Node));
if (!src || !nodeCopy)
return NULL;
nodeCopy->id = src->id;
nodeCopy->nConnect = src->nConnect;
strcpy (nodeCopy->name, src->name);
return nodeCopy;
}
最佳答案
现在,您以相同的方式处理NULL参数值和malloc
的NULL返回。您可能想对它们每个做一些不同的事情。
在src
为NULL的情况下,从该函数返回NULL很有可能。但是,如果malloc
返回NULL,则通常意味着出现了严重错误,程序应使用exit
。
Node * node_copy(const Node * src) {
Node *nodeCopy;
if (!src)
return NULL;
nodeCopy = malloc(sizeof (Node));
if (!nodeCopy) {
perror("malloc failed");
exit(1);
}
nodeCopy->id = src->id;
nodeCopy->nConnect = src->nConnect;
strcpy (nodeCopy->name, src->name);
return nodeCopy;
}