gpt4 book ai didi

C - 更改结构中的成员时出现重新分配错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:02 24 4
gpt4 key购买 nike

尝试更改结构中的 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 分配空间,即 ptr[0],而不是 ptr[1].

经典的逐一结合缓冲区溢出:-)

关于C - 更改结构中的成员时出现重新分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36582238/

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