gpt4 book ai didi

c - libc 检测到 *** ./textfileread.exe : realloc(): invalid next size: 0x08643008

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

<分区>

我在 main 中声明了双指针并像这样分配内存

char  **group_name;
group_name = realloc( NULL, 1);
group_name[0] = realloc(NULL ,20);

我已经将这个数组传递给了一个函数,

group_count(object, count, group_name);

它使用 realloc。它工作正常,直到它填充前四个重新分配,但在第五个它给出错误。

libc detected *** ./textfileread.exe:  realloc(): invalid next size: 0x08643008

int group_count(struct friends obj[], char cn, char **grp_nm)
{
int i=0,j=0;
int grp_cn=0;
char check=0;
strcpy(grp_nm[0],obj[0].group);
grp_cn++;
grp_count++;

for(i=1;i<cn;i++) {
for(j=0;j<grp_cn;j++) {
if(strcmp(grp_nm[j],obj[i].group)==0)
check=1;
}
if(check==0) {
grp_cn++;
grp_count++;
printf("\t%d\n",grp_cn);
grp_nm = realloc( grp_nm, grp_cn); //at grp_cn=5 allocation gives error
printf("\t%d\n",grp_nm);
if(grp_nm == NULL) printf("\t%d\n",grp_cn); // this 'if' didnt run, means no NULL return
grp_nm[grp_cn-1] = realloc(NULL ,20);
strcpy(grp_nm[grp_cn-1],obj[i].group);
}
check=0;
}
}

printf("\t%d\n",grp_nm) 的输出;下面给出,在此之后的第五次重新分配迭代

2
140783624
3
140783624
4
140783624
5

*** glibc detected *** ./textfileread.exe: realloc(): invalid next size: 0x099c8008 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6b961)[0x17b961]
lib/i386-linux-gnu/libc.so.6(+0x6f1ad)[0x17f1ad]
/lib/i386-linux-gnu/libc.so.6(realloc+0xe9)[0x180579]
./textfileread.exe[0x804934e]
./textfileread.exe[0x8048b42]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x126e37]
./textfileread.exe[0x8048751]
======= Memory map: ========
00110000-0026a000 r-xp 00000000 08:02 1570626 /lib/i386-linux-gnu/libc-2.13.so

在屏幕上输出 5 之后,地址应该显示为 4 之后的显示。但它没有,那么为什么在 5 时会出错?

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