我正在尝试实现一个连接两个字符串的函数,但我不断收到相同的错误。 “重新分配的指针未分配” 当我在 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 获得的字符串的长度,同时与我发送的字符串具有相同的地址,这样当我想添加另一个字符串时,我可以为其分配更多内存到它。
最佳答案
有几个问题:
realloc(string, (counter)*sizeof(char));
错误,需要string = realloc(string, (counter)*sizeof(char)) ;
因为realloc
可能返回不同的地址。调用
createString(string, length);
不会修改string
如果您想要更准确的答案,您需要告诉我们确切 createString
应该做什么。在您的代码中,没有尝试连接两个字符串。
关于c - 错误 :"pointer being realloc' d 未分配”在 macOS 上,但在 Windows 上尝试重新分配两次时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52647970/