CMemFile クラス

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 のメンバー関数 DuplicateLockRange、および UnlockRange は、CMemFile では実装されません。 CMemFile オブジェクトでこれらの関数を呼び出すと、CNotSupportedException になります。

CMemFile はメモリを割り当て、再割り当て、解放するためにランタイム ライブラリ関数 mallocrealloc、および free を使います。さらに、メモリの読み込み、書き込み時にメモリをブロック コピーするために組み込みの memcpy を使っています。 CMemFile がファイルを拡張するときのこういった動作などを変更する場合は、CMemFile から独自のクラスを派生し、適切な関数をオーバーライドします。

CMemFile の詳細については、「MFC のファイル」と「メモリ管理 (MFC)」および「ランタイム ライブラリ リファレンス」の「ファイル処理」を参照してください。

必要条件

**ヘッダー:**afx.h

参照

参照

CFile クラス

階層図

その他の技術情報

CMemFile のメンバー