CMemFile クラス
更新 : 2007 年 11 月
CFile クラスの派生クラスで、メモリ上のファイルをサポートします。
class CMemFile : public CFile
解説
メモリ ファイルは、ファイルがディスクではなく RAM に格納されることを除いては、ディスク ファイルと同じように動作します。メモリ ファイルは、高速の一時記憶領域として、あるいは生バイトまたはシリアル化されたオブジェクトを独立したプロセス間で転送するときに便利です。
CMemFile オブジェクトは、オブジェクトのメモリを自動的に割り当てることができます。また、Attach を呼び出して CMemFile オブジェクトと独自のメモリを結びつけることもできます。いずれの場合も、nGrowBytes が 0 以外の値のときは、メモリは nGrowBytes に指定されたサイズで増分されて割り当てられ、メモリ ファイルが自動的に拡張されます。
CMemFile オブジェクトが独自にメモリを割り当てた場合は、CMemFile オブジェクトを破棄するときにメモリ ブロックが自動的に削除されます。それ以外の場合は、オブジェクトに結び付けたメモリを解放する必要があります。
Detach を呼び出して CMemFile オブジェクトからメモリを切り離した場合でも、用意されているポインタを使ってメモリ ブロックにアクセスできます。
CMemFile の最も一般的な使い方は、CMemFile オブジェクトを構築して、CFile のメンバ関数を呼び出しそのオブジェクトを利用することです。CMemFile は作成と同時に自動的に開かれます。したがって、CFile::Open は呼び出しません。この関数はディスク ファイルでのみ使います。CMemFile はディスク ファイルを使わないので、CFile::m_hFile は使われません。
CFile のメンバ関数 Duplicate、LockRange、および UnlockRange は、CMemFile では実装されません。CMemFile オブジェクトでこれらの関数を呼び出すと、CNotSupportedException になります。
CMemFile はメモリを割り当て、再割り当て、解放するためにランタイム ライブラリ関数 malloc、realloc、および free を使います。さらに、メモリの読み込み、書き込み時にメモリをブロック コピーするために組み込みの memcpy を使っています。CMemFile がファイルを拡張するときのこういった動作などを変更する場合は、CMemFile から独自のクラスを派生し、適切な関数をオーバーライドします。
CMemFile の詳細については、「MFC のファイル」と「メモリ管理 (MFC)」および「ランタイム ライブラリ リファレンス」の「ファイル処理」を参照してください。
必要条件
ヘッダー : afx.h