Qt不能读取大的文件

QT_wobuhui 2014-10-21 02:40:16
DataProcess::DataProcess(const QString& filepath) :
DatafilePath(filepath)
{
QFile file(DatafilePath);
if(!file.open(QIODevice::ReadOnly)) {
qDebug()<<"open failed!"<<endl;
}
// 读到一维数组
datastruct.nDatas=file.size()/4;
QDataStream in(&file);
in.setByteOrder(QDataStream::LittleEndian); //设置排列的顺序
in.setFloatingPointPrecision(QDataStream::SinglePrecision); //单精度
datastruct.data = new float[datastruct.nDatas]; //总共的字数
for(int i=0;i<datastruct.nDatas;++i){
in>>datastruct.data[i]; //添加元素
}
}
可以读取.dat文件大小600M的,读取1G的就奔溃了,求大神指点,谢谢
...全文
819 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜗牛sf 2014-12-02
  • 打赏
  • 举报
回复
建个内存池,分段读取文件,具体内存池的做法可以从网上查下或者参考下STL的alloc,用过这种方法读过数十G的文件
wwwspider001 2014-12-01
  • 打赏
  • 举报
回复
读取一部分后就处理,然后继续读取下一部分处理
QT_wobuhui 2014-10-21
  • 打赏
  • 举报
回复
如何编写分批读取呀 谢谢啦
彩阳 2014-10-21
  • 打赏
  • 举报
回复
分批读取啊,操作文件指针还不算难吧。 我看很多二进制编辑器都是分批读取,所以不管是多大的文件总能够读得进来。
QT_wobuhui 2014-10-21
  • 打赏
  • 举报
回复
大神 果然是一语中的,那怎么改呢,主要是想读取2g左右的数据到一个一位数组,然后从一位数组里面获取数据画图呀。
Marcelxx 2014-10-21
  • 打赏
  • 举报
回复
这个不是程序的问题,而是OS对分配的内存有限制。直接new太大的内存是不被允许的,可以考虑使用其他方式比如vector等,不要一次性分配很大的内存,而且这个还有移植性的问题,在windows上new的最大内存和Linux下new的最大内存是不相等的。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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