gpt4 book ai didi

c - Sigtrap 代码中只有一个免费

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

所以这是我的问题,我创建了这个结构:

typedef struct foo *fooPtr;
struct foo {
foo2Ptr node;
foo3Ptr node;
char *Random;
};

fooNew(char* String) {
int StringLength;
StringLength = strlen(String) + 1;
Newfoo = (fooPtr *)malloc(sizeof(fooPtr));
Newfoo->Random = (char*)malloc(StringLength * sizeof(char));
strcpy(Newfoo->Random, String);
/*Rest of foo members initialized below....*/
}

fooChangeRandom(fooPtr Foo, String) {
int StringLength;
StringLength = strlen(String) + 1;
free(Foo->Random);
Foo->Random = (char*)malloc(StringLength * sizeof(char));
strcpy(Foo->Random, String);
}

但是每当我尝试打印新字符串时,我都会得到随机字符。我记得 C 要求我释放使用 malloc、calloc 或 realloc 分配的所有内容,那么当 fooNew 结束时 Random 会如何变化?尝试调试并在 free 中我收到 SIGTRAP 错误,在使用 free() 的行上,但是这是我创建的唯一动态分配的对象,并且我之前没有使用过 free 。那么 malloc 或 free 的语法是否有我遗漏或有问题的地方?

最佳答案

您需要更正

Newfoo = (fooPtr *)malloc(sizeof(fooPtr));

Newfoo = (fooPtr *)malloc(sizeof(struct foo));

关于c - Sigtrap 代码中只有一个免费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705731/

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