源码如下:
HANDLE HFile;
HANDLE HFileMapping
HFile = CreateFile(PathLossFileName, GENERIC_WRITE ¦GENERIC_READ, 0, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (HFile == INVALID_HANDLE_VALUE)
{
HFile = NULL;
return FALSE;
}
else
{
HFileMapping = CreateFileMapping(HFile, NULL, PAGE_READWRITE, 0, FileSize, NULL);
if (HFileMapping != NULL && GetLastError()==ERROR_ALREADY_EXISTS)
{
CloseHandle(HFileMapping);
HFileMapping = NULL;
CloseHandle(HFile);
return FALSE;
}
else
{
p_plData = (PLData*)MapViewOfFile( HFileMapping, FILE_MAP_WRITE, 0, 0, 0);
if(p_plData == NULL)
{
CloseHandle(HFileMapping);
CloseHandle(HFile);
return FALSE;
}
}
}
当数据量大的时候,HFile ,HFileMapping 都能正常的获得值,但是到p_plData的值就是空指针了,查了Geterror的值是8,说空间不足,导致的。
请教一下大家,有什么办法吗?而且我的内存有1GB啊,文件大概也就600MB啊,我虚拟内存有1.5GB啊,应该是够用的啊。请教大家啊,着急,看看有什么办法可以处理这样的数据啊,在内存映射中。分段是肯定不可以的了,因为别人也需要调用我的这块内存啊,现在郁闷死了。谢谢大家了————
我觉得内存是够用了,包括虚拟内存啊?有什么函数是查虚拟内存使用了多少的吗?
如果要分段读取,该如何写呢?有例子吗?
谢谢各位了——
HANDLE HFile;
HANDLE HFileMapping
HFile = CreateFile(PathLossFileName, GENERIC_WRITE ¦GENERIC_READ, 0, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (HFile == INVALID_HANDLE_VALUE)
{
HFile = NULL;
return FALSE;
}
else
{
HFileMapping = CreateFileMapping(HFile, NULL, PAGE_READWRITE, 0, FileSize, NULL);
if (HFileMapping != NULL && GetLastError()==ERROR_ALREADY_EXISTS)
{
CloseHandle(HFileMapping);
HFileMapping = NULL;
CloseHandle(HFile);
return FALSE;
}
else
{
p_plData = (PLData*)MapViewOfFile( HFileMapping, FILE_MAP_WRITE, 0, 0, 0);
if(p_plData == NULL)
{
CloseHandle(HFileMapping);
CloseHandle(HFile);
return FALSE;
}
}
}
当数据量大的时候,HFile ,HFileMapping 都能正常的获得值,但是到p_plData的值就是空指针了,查了Geterror的值是8,说空间不足,导致的。
请教一下大家,有什么办法吗?而且我的内存有1GB啊,文件大概也就600MB啊,我虚拟内存有1.5GB啊,应该是够用的啊。请教大家啊,着急,看看有什么办法可以处理这样的数据啊,在内存映射中。分段是肯定不可以的了,因为别人也需要调用我的这块内存啊,现在郁闷死了。谢谢大家了————
我觉得内存是够用了,包括虚拟内存啊?有什么函数是查虚拟内存使用了多少的吗?
如果要分段读取,该如何写呢?有例子吗?
谢谢各位了——
就是没有使用虚拟内存啊。
Mackz,如何搞定啊?