【发布时间】:2020-04-30 19:52:31
【问题描述】:
text 是一个普通的字符串数据。
1." "表示分词。
2."."表示句子的分离。
3."\n" 表示段落的分隔。
get_document 是一个函数,它将每个单词、句子、段落分配给单独的内存块,使其易于访问。 这是代码sn-p。
char**** get_document(char* text) {
//get_document
int l=0,k=0,j=0,i=0;
char**** document = (char****)malloc(sizeof(char***));//para
document[l] = (char***)malloc(sizeof(char**));//sen
document[l][k] = (char**)malloc(sizeof(char*));//word
document[l][k][j] = (char*)malloc(sizeof(char));//letter
for(int z = 0; z < strlen(text); z++) {
if(strcmp(&text[z]," ")==0) {
document[l][k][j][i] = '\0';
j++;
document[l][k] = realloc(document[l][k],(sizeof(char*)) * j+1);
i=0;
document[l][k][j] = (char*)malloc(sizeof(char));
}
else if(strcmp(&text[z],".")==0) {
k++;
document[l] = realloc(document[l],(sizeof(char**)) * k+1);
j=0;
i=0;
document[l][k] =(char**)malloc(sizeof(char*));
document[l][k][j] = (char*)malloc(sizeof(char));
}
else if(strcmp(&text[z],"\n")==0) {
l++;
document = realloc(document,(sizeof(char***)) * l+1);
k=0;
j=0;
i=0;
document[l] = (char***)malloc(sizeof(char**));
document[l][k] =(char**)malloc(sizeof(char*));
document[l][k][j] = (char*)malloc(sizeof(char));
}
else {
strcpy(&document[l][k][j][i],&text[z]);
i++;
document[l][k][j] = realloc(document[l][k][j],(sizeof(char)) * i+1);
}
}
return document;
}
但是当我运行程序时,我得到了错误
realloc:invalid next size
谁能帮我解决这个问题。提前致谢。
【问题讨论】:
-
忠告:如果您发现自己超出了两个间接级别,认真质疑您是否需要做任何您认为自己正在做的事情。对于这个世界上所有美好的事物,stop casting
mallocin C programs。也就是说,您的示例输入和调用它并产生错误的驱动main是相关的。将它们包含在您的帖子中以制作minimal reproducible example。 -
char****这是一个巨大的设计问题。 -
现在我明白为什么大多数人不投了,谢谢@WhozCraig
-
关于:
****read about 3 star programmer
标签: c string malloc dynamic-memory-allocation realloc