CMemFile

CObject
 └CFile
    └CMemFile

CMemFile为支持内存文件的CFile的派生类。内存文件的行为类似于磁盘文件,所不同的是该文件存储在RAM中,而不是磁盘上。内存文件用于快速暂时存储,以及在独立的进程间转换字节或可串行化的对象。
CMemFile对象能够自动地分配它们的内存空间,或通过调用Attach函数为CMemFile对象附加内存块。另一种情形,如果nGrowBytes非零,那么将自动地以nGrowBytes为单位为增加的内存文件分配内存。
可以通过提供的指针访问内存块,此时可以通过调用Detach函数将其从CMemFile对象中分离出来。
CMemFile函数最一般的用途是创建CMemFile对象,并通过调用CFile成员函数来使用它。值得注意的是当创建CMemFile后将自动得打开它:不要调用仅仅用于磁盘文件的CFile::Open函数,其原因在于没有使用数据成员CFile::m_hFile。
CFile成员函数Duplicate, LockRange和UnlockRange对于CMemFile无效。如果在CMemFile对象中调用了这些函数,那么将获得CnotSupported Exception。
CMemFile使用了运行库函数malloc, realloc,和free来分配、重新分配和释放内存,而原有的memcpy函数在进行读写时,可以块拷贝。如果希望改变这种行为或CMemFile增大文件的行为,那么应当从CMemFile中派生自己的类,并辅以适当的函数。
如果要了解有关CMemFile的更多信息,请参阅联机文档“Visual C++程序员指南”中的“MFC中的文件”及“内存管理主题(MFC)”,并参阅联机文档“Microsoft Visual C++运行库参考”中的“文件处理”。
#include <afx.h>


CMemFile类的成员

构造函数
CMemFile构造一个内存文件对象

操作
Attach附加内存块到CMemFile中
Detach从CMemFile中分离内存块,并返回被分离的内存块的指针

高级可覆盖的函数
Alloc可覆盖以用于修改内存分配行为
Free可覆盖以用于修改释放内存行为
Realloc可覆盖以用于修改重新分配内存行为
Memcpy可覆盖以用于读写时修改内存拷贝行为
GrowFile可覆盖以用于修改文件增大时的行为