如何收回内存映射缓冲区的内存?
作者:未知 来源:网络 更新时间:2011/4/16
我运用内存映照,一个结构化的数据,CopyMemory到定义的结构表后,
计划收回缓冲区内存,但犯错,讨教如何措置惩罚。
谢谢!
---华软 网友回答---
不用delete,用UnmapViewOfFile(m_dbfBuffer);就好了
---华软网友回复---
对,我用UnmapViewOfFile就好了。有点奇怪为什么delete 会犯错。
---华软网友回复---
MapViewOfFile映照运用完之后如果需要释放,运用UnmapViewOfFile来举行。这个MSDN里都有提到,配对运用就好了。
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。
计划收回缓冲区内存,但犯错,讨教如何措置惩罚。
谢谢!
C++">
Jumark Marklist[1470987];//Jumark是声明的一个结构
HANDLE hFile = CreateFile("D:\\DATA.BIN",
GENERIC_READ,
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
cout << "创建dbf资料失利..." << endl;
return RET_ERR;
}
HANDLE hFileMapping = CreateFileMapping(hFile,NULL,PAGE_READONLY,0,17651844,NULL);
if (hFileMapping == NULL)
{
//CHSLog::GetHSLog()->hsDebugPerform("创建dbf资料映照失利...");
cout << "创建dbf资料映照失利..." << endl;
return RET_ERR;
}
Jumark *m_dbfBuffer = (Jumark *)MapViewOfFile( hFileMapping, FILE_MAP_READ, 0, 0, 0 );
CopyMemory(Marklist,m_dbfBuffer,17651844); //把数据复制到Marklist中便于措置惩罚。
//用下面两种方法都会
delete m_dbfBuffer;//释放指针,收回缓冲内存,两种方法,都会引起异常:0xC0000005
delete []m_dbfBuffer;//释放指针,收回缓冲内存,都会引起异常:0xC0000005
CloseHandle(hFileMapping);
CloseHandle(hFile);
---华软 网友回答---
不用delete,用UnmapViewOfFile(m_dbfBuffer);就好了
---华软网友回复---
对,我用UnmapViewOfFile就好了。有点奇怪为什么delete 会犯错。
---华软网友回复---
MapViewOfFile映照运用完之后如果需要释放,运用UnmapViewOfFile来举行。这个MSDN里都有提到,配对运用就好了。
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。
- 上一篇文章: MFC中Cdib类如何使用??请大仙指点
- 下一篇文章: 局部变量的初值为什么或者为0,或者为1241512?