急急急!!!大神们 求助 段错误

qq_33282385 2016-01-25 01:59:20
我用c写一个字典项目 有dict.txt文件 里面有20万行的单词 我用的链表总是有段错误 我试了下 把dict.txt里的单词减少好多 到只有1万行 就可以了 这是为什么 怎么改啊??
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
imGala 2016-01-25
  • 打赏
  • 举报
回复
1,在分配内存处加错误处理if(NULL == q) ...。 2,用GDB或其他调试工具,检查是否有其他地方有越界访问。
赵4老师 2016-01-25
  • 打赏
  • 举报
回复
将一个比如100GB的文件当作一个100GB的数组操作。
FILE *fb;
fb=fopen("A100GB.bin","rb+");

读数组
unsigned char Value=BigArray[Index];
对应
_fseeki64(fb,Index,SEEK_SET);
fread(&Value,1,1,fb);

写数组
BigArray[Index]=Value;
对应
_fseeki64(fb,Index,SEEK_SET);
fwrite(&Value,1,1,fb);

fclose(fb);
theskyisblue 2016-01-25
  • 打赏
  • 举报
回复
建议在每次malloc动态申请内存之后判断下q的值,先看下是否申请成功,如果因为异常情况,某一次内存申请失败了,那么q的值就是NULL了,但是你却当做正常情况去使用了,那么也会导致段错误。另外while循环外和循环内都有q=()malloc();看着感觉好重复,建议改成do...while循环
筱德 2016-01-25
  • 打赏
  • 举报
回复
可能你电脑内存不够存那20万行数据
qq_33282385 2016-01-25
  • 打赏
  • 举报
回复
我是新手不太懂 能给我写一下代码吗??
赵4老师 2016-01-25
  • 打赏
  • 举报
回复
用文件读写模拟内存读写。
qq_33282385 2016-01-25
  • 打赏
  • 举报
回复
我用的虚拟机 有60个G的内存 应该怎么改呢
ipqtjmqj 2016-01-25
  • 打赏
  • 举报
回复
会不会是内存不够, 20万行就是200K行,就是0.2M行, 如果sizeof(word)为1K, 就是0.2G了.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧