问大家一个内存映射的问题
我对一个大数据量的位图创建了一个内存映射对象:FileSrc
然后创建一个内存映射对象:FileObj
保存从位图里每四个像素读取一个像素,也就是隔行读取,在同一行里隔一个像素读取一个。
for (int k = 0;k <iPHeight;++k)
{
//每行数据隔一个像素拷贝一个
BYTE* Obj=FileObj.GetMapAddress();
BYTE* Src=FileSrc.GetMapAddress();
for(int s = 0; s <iPWidth;++s)
{
memcpy(Obj+s,Src+2*s,1);
}
FileObj.MoveMapAddress(iPWidth);
FileSrc.MoveMapAddress(2*iWidth);
}
现在的情况是:在源图像里读到第70行的时候,源图像内存映射对象的指针,出现错误:CXX0030: Error: expression cannot be evaluated
如果我改变函数:
LPVOID MapViewOfFile(
HANDLE hFileMappingObject,
DWORD dwDesiredAccess,
DWORD dwFileOffsetHigh,
DWORD dwFileOffsetLow,
DWORD dwNumberOfBytesToMap
);最后一个参数,把它改大一点,出现出现错误的行数就会大一点,我想这应该是内存映射的问题,麻烦大家给我点提示,谢谢了!!
[解决办法]
将最后一个参数改成0