gpt4 book ai didi

c - 意外的 strcpy 段错误

转载 作者:行者123 更新时间:2023-11-30 18:51:54 25 4
gpt4 key购买 nike

我发现了一个无法解析的段错误。以免您认为我没有搜索过,我不认为该问题与 this question 中的问题相同。 。我有以下类型定义的结构:

typedef struct usage usage;
struct usage{
char name[9];
int loc;
usage *next;
};

我正在从一个文件中读取数据,该文件由数字 K 后跟 K 对 (S,D) 组成,其中 S= 8 个字符的字符串 [这是变量名],d= 整数 [内存位置] ].

这是导致错误的代码:

void addUse(int index,char *nm, int addr){
usage *temp;
strcpy(temp->name,nm); //segfault here.
temp->loc = addr;
temp->next= NULL;
/* more processing */
}

为了更清楚地说明这一点,我从我拥有的 block 中调用此函数

int dummyIndex = 1;
char s1[9];
int val1;
scanf(" %s %d, s1, &val1);
addUse(dummyIndex, s1, val1);

在我链接到的问题中,似乎他们没有在堆上分配char。我不确定这里发生了什么。在另一个带有字段 char name[9]struct 上使用相同的 strcpy 调用效果很好。

我错过了什么?我忽略了什么?

提前致谢!

最佳答案

您忘记初始化临时指针,因此它指向随机内存。当你写时

strcpy(temp->name, mm);

您正在跟踪指向随机地址的指针并在那里写入字节,因此会出现段错误。

关于c - 意外的 strcpy 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635327/

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