QFile map报错

Zhangy-Pony 2017-09-03 09:42:34
为了提高IO效率,我在读取数据后使用文件映射加快数据读取效率,经常会遇到内存映射失败的情况

m_pBlock = m_pFile->map(m_nFrom, nMapSize);
if (NULL == m_pBlock)
{
QString str = m_pFile->fileEngine()->errorString();
}

获取的错误是:
1、存储空间不足,无法处理此命令。
2、句柄无效。

但是通过new是可以获取到等大小的空间的,比如映射大小是196608会映射失败,但失败的时候通过new是可以申请到的,这个问题会是什么原因导致的呢?烦请指点,不胜感激
...全文
674 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
new的时候申请到的空间与map时映射空间不一样。new时申请的空间就这么多。但是map时需要创建红黑树,映射相关等其他动作,所需要的空间比申请的空间要多,因此申请会比new申请的空间要多。
Zhangy-Pony 2017-09-04
  • 打赏
  • 举报
回复
引用 1 楼 qqwangfan 的回复:
new的时候申请到的空间与map时映射空间不一样。new时申请的空间就这么多。但是map时需要创建红黑树,映射相关等其他动作,所需要的空间比申请的空间要多,因此申请会比new申请的空间要多。
多谢您的解答,是需要了解下文件映射做了什么,我再分析下

16,203

社区成员

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

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