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使用了运行
库函数m
alloc,
realloc,和free来分配、重新分配和释放内存,而原有的
memcpy函数在进行读写时,可以块拷贝。如果希望改变这种行为或CMemFile增大文件的行为,那么应当从CMemFile中派生自己的类,并辅以适当的函数。