gpt4 book ai didi

c - 错误 :"pointer being realloc' d 未分配”在 macOS 上,但在 Windows 上尝试重新分配两次时有效

转载 作者:行者123 更新时间:2023-12-02 09:10:41 27 4
gpt4 key购买 nike

我正在尝试实现一个连接两个字符串的函数,但我不断收到相同的错误。“重新分配的指针未分配”当我在 Windows 机器上编译相同的代码时,它可以工作,这是我遗漏的东西吗?下面的代码基本上就是我想要做的。主要:

int main() {

int length = 4096;
char *string = malloc(length * sizeof(char));
createString(string, length);
realloc(string, 30);
return 0;
}

创建字符串:

void createString(char * string, int length) {
char *copyAdress = string;
char *temp ="";
int counter2 = 0;

fflush(stdin);
fgets(string, length,stdin);
while(*string != EOF && *string != *temp ) {
string++;
counter++;
}
string = copyAdress;
realloc(string, (counter)*sizeof(char));
}

谢谢!编辑:我希望 createString 将字符串的大小更改为使用 fgets 获得的字符串的长度,同时与我发送的字符串具有相同的地址,这样当我想添加另一个字符串时,我可以为其分配更多内存到它。

最佳答案

有几个问题:

  1. realloc(string, (counter)*sizeof(char)); 错误,需要 string = realloc(string, (counter)*sizeof(char)) ; 因为 realloc 可能返回不同的地址。

  2. 调用 createString(string, length); 不会修改 string

如果您想要更准确的答案,您需要告诉我们确切 createString 应该做什么。在您的代码中,没有尝试连接两个字符串。

关于c - 错误 :"pointer being realloc' d 未分配”在 macOS 上,但在 Windows 上尝试重新分配两次时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52647970/

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