gpt4 book ai didi

c - 程序运行并显示输出后段错误核心转储

转载 作者:行者123 更新时间:2023-11-30 20:24:35 25 4
gpt4 key购买 nike

我对开始时的程序做了一些更改:但由于另一个原因,我遇到了段错误。它发生在我的输出之后,我认为这可能与我在 destroy 函数中的 free 语句有关。我通过 gdb 运行它,它告诉我我正在尝试访问 0X000000d 内存位置,这很奇怪,因为我可以打印出结构的内存位置,并且它显示了不同的内容。我知道我可能错过了一些非常小的事情。任何帮助将不胜感激,谢谢!

必须删除 m 代码,因为这是学校正在进行的项目,感谢您的回复,一旦我们获得成绩,我会将其重新发布。

最佳答案

您的代码中有未定义的行为

采取这一行:

struct Person *UserOne=inputvalues(UserOne);

在这里,您定义了一个变量UserOne,并通过调用inputvalues函数对其进行初始化,并为其传递未初始化指针。这意味着在 inputvalues 函数内,temp 指针未初始化,并且其值不确定,当您取消引用该指针时,会导致所述 UB。

一种可能的解决方案是定义一个不是指针的结构变量,并在调用inputvalues时使用它,或者通过动态分配结构并传递给函数。或者重新设计程序,根本不向函数传递参数,而让函数自己分配结构。

像这样使用未初始化的变量很容易被编译器检测到,并且大多数可以为此发出警告。如果您没有收到此类警告,您可能需要考虑启用更多警告。

关于c - 程序运行并显示输出后段错误核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33141205/

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