gpt4 book ai didi

c - glibc 检测到 : realloc(): invalid next size

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

我正在尝试创建一个动态数组,它使用双指针将给定句子的单词存储在动态二维数组中,但每当我给出三个以上的单词时,我都会收到以下错误:

*** 检测到 glibc *** ./a.out:realloc():下一个大小无效:0x000000000255a030 ***

相关代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
char **ptr=NULL;
char letter;
int ptrsize=1, wordsize=1;
ptr=malloc(ptrsize*sizeof(char *));
ptr[ptrsize]=(char *)malloc(wordsize*sizeof(char));
do
{
letter=getchar();
while ((letter!=' ')&&(letter!='\n'))
{
ptr[ptrsize][wordsize]=letter;
*ptr= realloc(*ptr,wordsize+1);
wordsize++;
letter=getchar();
}
ptrsize++;
ptr = realloc(ptr,ptrsize*sizeof(char));
wordsize=1;
ptr[ptrsize]=malloc(wordsize*sizeof(char));
}
while (letter!='\n');
return 0;
}

通过修改双指针的malloc和realloc,我设法增加了句子的大小,但仍然没有找到任何可靠的解决方案。提前致谢。

最佳答案

这段代码

 ptr=malloc(ptrsize*sizeof(char *));
ptr[ptrsize]=(char *)malloc(wordsize*sizeof(char));

并且循环体后面重复的相似行是不正确的。

像这样的数组

Type* ptr = malloc(N * sizeof(Type));

具有从 0N - 1 的有效索引。 ptr[N] 总是会超过数组的末尾。写入此内存和/或重新分配它可能最终会破坏堆数据结构。

关于c - glibc 检测到 : realloc(): invalid next size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14150230/

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