大文件读取

黑夜愁客 2010-12-31 07:05:33
使用的是CodeBlock IDE
我想读取一个文件中有10000000条记录,


long long MAXS = 1100000LL;
vector<char> mycharvector;
char buf[MAXS];
freopen("test.txt","rb",stdin);
long long len = fread(buf,1,MAXS,stdin);
buf[len] = '\0';
for (long long i=0;i< len;i++)
{
mycharvector.push_back(buf[i]);
}
printf("Test 3: %.3lf\n",double(clock()-start)/CLOCKS_PER_SEC);
fclose(stdin);

测试1000000条就没有问题,10000000就有问题了,帮忙看看,如何全部读取
...全文
311 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
羽飞 2011-01-01
  • 打赏
  • 举报
回复
我也建议用List不用Vector,Vector占用的内存都是连续的
kingstarer 2011-01-01
  • 打赏
  • 举报
回复
你的程序有bug

只读了一行文件

之所以会错,估计是由于内存不足导致的

可以修改一下最大堆大小
since10084 2010-12-31
  • 打赏
  • 举报
回复
建议内存映射读取文件
黑夜愁客 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aayy 的回复:]

默认的栈内存不够?改大一点看看
[/Quote]CB中不知道那里修改
jeansea 2010-12-31
  • 打赏
  • 举报
回复
项目属性->linker->system->stack Commit Size调大点就可以了
aayy 2010-12-31
  • 打赏
  • 举报
回复
默认的栈内存不够?改大一点看看
huangzhe10 2010-12-31
  • 打赏
  • 举报
回复
不要用vector而是用list试试
maoxing63570 2010-12-31
  • 打赏
  • 举报
回复
用createfilemapping

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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