此函数的错误处理是否有问题?具体来说,我猜这两行:

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;
}

07-26 04:20