错误代号: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。