您的位置:首页 > 其它

COM 中内存映射文件和虚拟内存的问题

2009-07-28 09:24 351 查看
1.发现在com组件中使用内存映射文件时,当文件过大时出现问题。但是在普通可执行文件中使用则正常。

2.发现在com组件中使用虚拟内存也会出现一样的问题。

3.目前还没有找到好的解决方案。

问题描述

HANDLE hFile = ::CreateFile( p_csName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY, NULL );
if( hFile != INVALID_HANDLE_VALUE )
{
// 创建文件映射对象,如果创建失败,则进行错误处理
HANDLE hMap = ::CreateFileMapping( hFile, NULL, PAGE_READONLY, 0, 0, NULL);
DWORD dwSize = 0;
if( hMap )
{
。。。 。。。
::UnmapViewOfFile( pBaseAddr );
}
::CloseHandle( hFile );
}

这段代码在可执行程序中执行很正常,但是在vc6编写的com组件中无法打开500M意思的大文件,提示是内存不够。但是实际上物理内存和虚拟内存都是很充足的。目前还没有解决。

已经解决原来是和内存碎片相似的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: