【发布时间】:2014-05-25 01:06:39
【问题描述】:
为什么固定数组可以工作,但是当我尝试使用 malloc 使其成为动态数组时,会出现分段错误?除了 *10 之外,我尝试了各种值。这只是使用一个小文件。我需要它来处理包含 90,000 个单词的字典。
FILE *fp;
long lSize;
//char buffer[100];
char *buffer=malloc(sizeof(char)*10);
int i = 0;
fp = fopen ( "cats.txt" , "rb" );
if( !fp ) perror("cats.txt"),exit(1);
wordTree = makeEmptyTree();
while( fscanf(fp, "%s", &buffer) != EOF )
{
addStringToTree(wordTree, buffer);
//printf("%s\n", words[i]);
}
fclose(fp);
//free(buffer);
如果需要,我也可以包含 addStringToTree。
编辑 1
感谢修复它的人。不幸的是,我无法让 90,000 字的文本文件工作,仍然出现 seg 错误错误。
【问题讨论】:
-
关于编辑。使缓冲区足够大。如果问题仍然存在,请确保
wordTree一切正常。尝试使用调试器,例如 gdb。
标签: c dynamic segmentation-fault malloc coredump