gpt4 book ai didi

c - 这个函数的错误处理有问题吗?

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:21 24 4
gpt4 key购买 nike

是不是这个函数的错误处理有问题?具体来说,我猜在这两行中:

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,这通常意味着出现了严重错误,程序应该退出

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

关于c - 这个函数的错误处理有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54659166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com