| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖
标题:[求助]关于内存映射的问题,读数据时在一个地方总是越界
只看楼主 加入收藏
A1042yang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-12-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
[求助]关于内存映射的问题,读数据时在一个地方总是越界
如题所示,我用内存映射打开一个文件,想读里面的数据,但是总是在一个特定的地方越界,找不出原因,请大侠们帮忙看看,因为刚刚接触这个东西,很多地方没弄明白。
部分代码如下:
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];
               }
                                    ....
                                   .....
}

....释放各种句柄。


就看不出有什么问题啊
搜索更多相关主题的帖子: 地方 
2010-12-24 13:34
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:10 
你用什么保证这类(PT[(index_i*numy+index_j)*numP+index_P])东西不越界?至少我看不到。

★★★★★为人民服务★★★★★
2010-12-24 21:01
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:10 
HANDLE PT=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
PBYTE pbFile = (PBYTE) MapViewOfFile(PT, FILE_MAP_COPY, 0, 0, 0);//加上这句


-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-12-24 21:05
快速回复:[求助]关于内存映射的问题,读数据时在一个地方总是越界
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025800 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved