注册 登录
编程论坛 VC++/MFC

[求助]关于内存映射的问题,读数据时在一个地方总是越界

A1042yang 发布于 2010-12-24 13:34, 443 次点击
如题所示,我用内存映射打开一个文件,想读里面的数据,但是总是在一个特定的地方越界,找不出原因,请大侠们帮忙看看,因为刚刚接触这个东西,很多地方没弄明白。
部分代码如下:
HANDLE hFile=CreateFile(file,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
///////////创建TForAllSubP文件的映射内核对象hTMap
HANDLE PT=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
CloseHandle(hFile);

PAL,PYorN都如上。

int *PT=(int*)(PTFile);
double *PAlp=(double *)(PAlpFile);
int *PYorN=(int*)(PYorNFile);
for(int index_i=0;index_i<numx;index_i++)//numx就是个数,200
    for(int index_j=0;index_j<numy;index_j++)//numy 200
         {
            for(int index_P=0;index_P<numP;index_P++)
  {
   TCompare[index_P]=PT[(index_i*numy+index_j)*numP+index_P];
   YorNCompare[index_P]=PYorN[(index_i*numy+index_j)*numP+index_P];
   AlpCompare[index_P]=PAlp[(index_i*numy+index_j)*numP+index_P];
               }
                                    ....
                                   .....
}

....释放各种句柄。


就看不出有什么问题啊
2 回复
#2
cnfarer2010-12-24 21:01
你用什么保证这类(PT[(index_i*numy+index_j)*numP+index_P])东西不越界?至少我看不到。
#3
ml2325282010-12-24 21:05
HANDLE PT=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
PBYTE pbFile = (PBYTE) MapViewOfFile(PT, FILE_MAP_COPY, 0, 0, 0);//加上这句

1