C - 更改结构中的成员时出现重新分配错误
C - realloc error when changing member in struct
尝试更改结构中的 int 成员时出现此错误:
Error in `./resize': realloc(): invalid next size: 0x00000000006bc010 ***
Aborted (core dumped)
我的代码是:
#include <stdlib.h>
typedef struct {
char* name;
int size;
} fich;
int main(){
int i = 1;
fich * ptr = NULL;
while(i < 5){
fich* newptr = realloc(ptr, i * sizeof(fich));
if(newptr != NULL)
ptr = newptr;
else return 1;
ptr[i].name = "stufs";
ptr[i].size = 1;
i++;
}
return 0;
}
我可以更改名称,但不能更改大小。怎么回事?
在 C 中,数组从索引 0 开始。您使用 i=1
的第一次迭代为一个 fich 分配 space,即 ptr[0]
,而不是 ptr[1]
。
经典的逐一结合缓冲区溢出:-)
尝试更改结构中的 int 成员时出现此错误:
Error in `./resize': realloc(): invalid next size: 0x00000000006bc010 *** Aborted (core dumped)
我的代码是:
#include <stdlib.h>
typedef struct {
char* name;
int size;
} fich;
int main(){
int i = 1;
fich * ptr = NULL;
while(i < 5){
fich* newptr = realloc(ptr, i * sizeof(fich));
if(newptr != NULL)
ptr = newptr;
else return 1;
ptr[i].name = "stufs";
ptr[i].size = 1;
i++;
}
return 0;
}
我可以更改名称,但不能更改大小。怎么回事?
在 C 中,数组从索引 0 开始。您使用 i=1
的第一次迭代为一个 fich 分配 space,即 ptr[0]
,而不是 ptr[1]
。
经典的逐一结合缓冲区溢出:-)