VC:GetLastError()==1132, 指定的基址或文件偏移量没有适当对齐

VC:GetLastError()==1132, 指定的基址或文件偏移量没有适当对齐。

默认分类 2008-09-28 22:01:53 阅读214 评论0  字号: 订阅

错误代号:1132  指定的基址或文件偏移量没有适当对齐。

相关代码段:

m_Pointer = (char *)MapViewOfFile(m_hMapFile,  

   FILE_MAP_ALL_ACCESS,    

1,
   32,
   1024);

不知道为什么出现上述错误,“指定的基址或文件偏移量没有适当对齐”,怎么才算“适当对齐”?改成

m_Pointer = (char *)MapViewOfFile(m_hMapFile,  

   FILE_MAP_ALL_ACCESS,    

1,
   0,
   1024);

后,就不再出现上述错误。难道低位必须是0吗?

 

最终解决方法:

映射时,低位为0。这样一来,按我的程序要求,每次低位快填充满了的时候,直接跳到第二个块区域,这样会出现少量的磁盘空间浪费。

按照上面的映射方法,在32位系统中,每次只能映射4GB的内存区域,如果文件为5GB,就得映射两次。那么,这时候就出现了数据的不连续。比如,在0-4GB区域,我可能在最后写入一个大小400Bytes的数据单元,假设剩余250B,这样的大小不足以写入400B的数据单元,此时,将重新映射到4-5G的数据区域,并在这里写入新的数据单元,这样一来,那250B就是磁盘空间浪费了,而前一个数据单元和后一个数据单元中间将出现这250B的间隔,这就是数据不连续。

现在只能这样,倒数第二个参数设置为0。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值