gpt4 book ai didi

c - strcpy to struct 时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:11 25 4
gpt4 key购买 nike

我有以下代码:

struct argument {
char *source;
char *destination;
int value;
};

int main(void){
struct argument *arg2 = malloc(sizeof(struct argument));
strcpy(arg2->source, "a1"); //This gives segmentation fault.
strcpy(arg2->destination, "a2");
arg2->value = 1500;

return 0;
}

问题是,当我将 strcpy 与 arg2->destination 一起使用时,一切运行正常,但是一旦我取消对 strcpy 与 arg2->source 的注释,我立即遇到段错误。怎么了?有办法解决这个问题吗?

最佳答案

您是众所周知的未定义行为 的受害者。您会看到,当在调用 strcpy 时使用未初始化的指针时,不能保证它会正常工作,也不能保证会抛出错误。基本上,任何都可能发生,有时甚至可以按预期工作,这使得此类错误更难查找和更正。

在使用它们之前,您需要为您的sourcedestination 指针分配内存,您可以使用malloc(strlen("someString") + 1); 。完成后,不要忘记通过调用free 释放内存。及早养成这种习惯,以后您将摆脱一些非常讨厌的错误和更多未定义的行为

关于c - strcpy to struct 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676958/

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