realloc 麻烦
Realloc trouble
我有问题。
我有中风:“/hello/world”
我需要将单词 'hello' 复制到另一个字符串;
我有这个代码:
void copy(char *command) {// copy
char *word = NULL;
int size = 1;
if (*command == '/') {
command++;
while (*command != '/') {
word = (char*)realloc(word, size * sizeof(char));
*word = *command;
size++;
word++;
command++;
}
printf("%s", word);
free(word);
}
但我收到此错误:Segmentation fault (core dumped)
我做错了什么?
正如@kaylum 所说,您收到错误的原因是您更改了 word
指针的值。当您为已分配的内存块数组重新分配内存并更改该内存块的大小时,realloc()
会更改大小,returns 会更改指向该已分配数组的第一个内存块的指针。在这种情况下,如果您想更改 word
的内存大小,请尝试使用索引来访问新添加的内存块。
void copy(char *command) {// copy
char *word = NULL;
printf("%s\n",command);
int size = 1,index=0;``
if (*command == '/') {
command++;
while (*command != '/') {
word = (char*)realloc(word, size * sizeof(char));
word[index] = *command;
size++;
command++;
index++;
}
printf("%s\n", word);
free(word);
}
}
我有问题。 我有中风:“/hello/world” 我需要将单词 'hello' 复制到另一个字符串;
我有这个代码:
void copy(char *command) {// copy
char *word = NULL;
int size = 1;
if (*command == '/') {
command++;
while (*command != '/') {
word = (char*)realloc(word, size * sizeof(char));
*word = *command;
size++;
word++;
command++;
}
printf("%s", word);
free(word);
}
但我收到此错误:Segmentation fault (core dumped)
我做错了什么?
正如@kaylum 所说,您收到错误的原因是您更改了 word
指针的值。当您为已分配的内存块数组重新分配内存并更改该内存块的大小时,realloc()
会更改大小,returns 会更改指向该已分配数组的第一个内存块的指针。在这种情况下,如果您想更改 word
的内存大小,请尝试使用索引来访问新添加的内存块。
void copy(char *command) {// copy
char *word = NULL;
printf("%s\n",command);
int size = 1,index=0;``
if (*command == '/') {
command++;
while (*command != '/') {
word = (char*)realloc(word, size * sizeof(char));
word[index] = *command;
size++;
command++;
index++;
}
printf("%s\n", word);
free(word);
}
}