gpt4 book ai didi

c++ - 这段代码安全吗(为什么它没有崩溃)?

转载 作者:行者123 更新时间:2023-11-30 19:55:54 26 4
gpt4 key购买 nike

我看到了列表合并排序的解决方案:

struct Node* SortedMerge(struct Node* a, struct Node* b)
{
struct Node* result = NULL;

/* Base cases */
if (a == NULL)
return(b);
else if (b==NULL)
return(a);

/* Pick either a or b, and recur */
if (a->data <= b->data)
{
result = a;
result->next = SortedMerge(a->next, b);
}
else
{
result = b;
result->next = SortedMerge(a, b->next);
}
return(result);
}

而且似乎不安全,因为 struct Node* result是在栈上分配的,函数调用返回后需要释放。

我检查过,它可以工作(没有崩溃)。

那么代码安全吗?为什么?

最佳答案

只要您不动态分配它,您就没有责任取消分配它。我不明白为什么这会仅仅因为它位于堆栈上而失败。

这不会导致错误。

如果每次调用函数时都分配结果然后不释放它,那会很糟糕,因为这会导致内存泄漏。

如果您尝试从函数返回局部变量的地址,也会出错。

关于c++ - 这段代码安全吗(为什么它没有崩溃)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47040748/

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