gpt4 book ai didi

c - 使用线程调试段错误

转载 作者:行者123 更新时间:2023-11-30 15:13:49 25 4
gpt4 key购买 nike

在调试我的 C 程序时,我收到此错误消息

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff77f6700 (LWP 14945)]
__strcpy_sse2_unaligned ()
at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:532
532 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: Aucun fichier ou dossier de ce type.

我认为发布我的代码是“无用的”,因为它没有精确的错误行。

但我知道我认为它来自这个函数:

void add_user(tlistU *lu, user * u,tuser *new)
{

tuser *nouveau = malloc(sizeof(tuser));

u =malloc(sizeof(*u));
if (lu == NULL || nouveau == NULL)
{
exit(EXIT_FAILURE);
}
strcpy(nouveau->users->nickname,u->nickname);
nouveau->next=lu->first;
lu->first=nouveau;
}

(昵称是一个 9 个字符的字符串)

最佳答案

你的代码有点奇怪。然而,崩溃的原因可能是这样的:

strcpy(nouveau->users->nickname,u->nickname);

请注意,nouveau 是您刚刚请求的一 block 未初始化的内存。然后,您将访问 nouveau->users->nickname,它假定 nouveau->users 是一个有效的指针。

发生的另一件事是在这里覆盖u:

u = malloc(sizeof(*u));

我怀疑你的实际意图是这样的:

nouveau->users = malloc(sizeof(*u));

这将解决这两个问题。

关于c - 使用线程调试段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34324714/

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