IAtlMemMgr クラス

このクラスは、メモリ マネージャーへのインターフェイスを表します。

__interface __declspec( uuid( "654F7EF5-CFDF-4df9-A450-6C6A13C622C0" )) IAtlMemMgr

メンバー

ztk4y4ak.collapse_all(ja-jp,VS.110).gifメソッド

割り当てます。

メモリ ブロックを割り当てるためにこのメソッドを呼び出します。

Free

メモリ ブロックを解放するには、このメソッドを呼び出します。

GetSize

割り当てられたメモリ ブロックのサイズを取得するときにこのメソッドを呼び出します。

再割り当てします。

メモリ ブロックを再割り当てするには、このメソッドを呼び出します。

解説

このインターフェイスは CComHeapCCRTHeapCLocalHeapCGlobalHeap、または CWin32Heapによって実装されます。

[!メモ]

ローカルおよびグローバル ヒープ関数は、他のメモリ管理関数より低速であり、できるだけ多くの機能はありません。したがって、新しいアプリケーションでは heap functionsを使用する必要があります。これらのクラスは CWin32Heap で使用できます。

使用例

// Demonstrate IAtlMemMgr using the five possible
// memory function implementation classes. 

HRESULT MemoryManagerDemonstration(IAtlMemMgr& MemoryManager) throw()
{
   // The IAtlMemMgr interface guarantees not to throw exceptions
   // so we can make the same guarantee for this function
   // without adding exception handling code.

   // A variable which will point to some allocated memory.
   void* pMemory = NULL;

   const size_t BytesInChunk = 1024;

   // Allocate a chunk of memory
   pMemory = MemoryManager.Allocate(BytesInChunk);

   // Confirm the validity of the allocated memory
   if (pMemory == NULL)
      return E_OUTOFMEMORY;

   // Confirm the size of the allocated memory
   ATLASSERT(MemoryManager.GetSize(pMemory) == BytesInChunk);

   // Increase the size of the allocated memory
   pMemory = MemoryManager.Reallocate(pMemory, BytesInChunk * 2);

   // Confirm the validity of the allocated memory
   if (pMemory == NULL)
      return E_OUTOFMEMORY;

   // Confirm the size of the reallocated  memory
   ATLASSERT(MemoryManager.GetSize(pMemory) == BytesInChunk * 2);

   // Free the allocated memory
   MemoryManager.Free(pMemory);

   return S_OK;
}

int DoMemoryManagerDemonstration()
{
   CComHeap heapCom;
   CCRTHeap heapCrt;
   CLocalHeap heapLocal;
   CGlobalHeap heapGlobal;
   // It is necessary to provide extra information 
   // to the constructor when using CWin32Heap
   CWin32Heap heapWin32(NULL, 4096); 

   ATLASSERT(S_OK==MemoryManagerDemonstration(heapCom));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapCrt));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapLocal));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapGlobal));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapWin32));

   return 0;
}

必要条件

Header: atlmem.h

参照

その他の技術情報

ATL クラスの概要