CMemFile::Attach

void Attach(BYTE* lpBuffer,UINT nBufferSize,UINT nGrowBytes = 0 );

参数:
lpBuffer指向附加到CMemFile的缓冲区的指针。
nBufferSize以字节为单位指定缓冲区大小的整数。
nGrowBytes以字节为单位表示的内存分配增量。

说明:
调用该函数,为CMemFile附加内存块。因此导致CMemFile使用内存块作为内存文件。
若nGrowBytes为0,那么CMemFile将使文件的长度设置为nBufferSize。这意味着内存块中的数据在附加给CMemFile之前将被用作文件。这种方式创建的文件不能增大。
既然该文件不能增大,那么需小心,不要使用CMemFile来增大文件。
例如,不要为了在文件尾写而调用CMemFile来覆盖CFile:Write,也不要调用比nBufferSize长度更大的CFile:SetLength。
如果nGrowBytes大于0,那么CMemFile将忽略附加的内存块中的内容。必须将使用CMemFile的覆盖函数CFile::Write抓取的内容写入内存文件中。如果企图在文件尾写或企图调用CMemFile的覆盖函数CFile::SetLength来增大文件,那么CMemFile将增大以nGrowBytes增量表示的内存分配。如果传递给Attach的内存块无法与Alloc共处,那么增大内存分配的努力将失败。为了能与缺省的Alloc操作共处,那么必须使用运行库函数malloc或calloc来分配内存。

请参阅:
CMemFile::CMemFile, CMemFile::Detach, CMemFile::Alloc, CFile::Write, CFile::SetLength