C#+内存映射硬错误
最近练习使用内存映射处理大型文件,当文件比较小的时候没问题,但遇到大型文件,就得分段映射。XP下总是得不到想要的结果,内存占用非常大,系统慢得要死,直到代码运行结束。Win7下发现内存硬错误,写一段理想情况下的代码,请高手帮忙分析一下,是内存泄露还是代码响应不及时,还是其它问题?谢谢。
long fileSize = 3<<30;//3G 3G/8M=384,3G%8M=0uint blockBytes = 1<<23;//8M 8M/64K=128,8M%64K=0,64K为系统页分配粒度long fileOffset = 0;byte[] temp = new byte[blockBytes];while(fileSize-fileOffset>0){ IntPtr hMapView = MapViewOfFile(hMapping, FILE_MAP_COPY | FILE_MAP_READ | FILE_MAP_WRITE, (uint)(fileOffset >> 32), (uint)(fileOffset & 0xFFFFFFFF), blockBytes); if (hMapView == IntPtr.Zero) { throw new Exception(Marshal.GetLastWin32Error().ToString()); } Marshal.Copy(hMapView, temp, 0, (int)blockBytes); fileOffset += blockBytes; UnmapViewOfFile(hMapView);}