共用方式為


Implementation of a Custom String Manager (Basic Method)

最簡單的方式自訂字串資料的記憶體配置計劃會使用 ATL 提供 CAtlStringMgr 類別,但您的記憶體配置常式。 CAtlStringMgr 的建構函式會接受單一參數:為 IAtlMemMgr 物件的指標。 IAtlMemMgr 是提供泛型介面給堆積的抽象基底類別。 使用 IAtlMemMgr 介面, CAtlStringMgr 配置,重新配置,並釋放所使用的記憶體中儲存字串資料。 您可以實作 IAtlMemMgr 介面,或是使用其中一個 ATL 提供了記憶體管理員類別。 ATL 提供了記憶體管理員包裝現有的記憶體配置安裝:

字串形式的記憶體管理的目的,,因為它可讓您建立多個獨立堆積,最實用的類別是 CWin32Heap 。 例如,在中,如果您想要對字串使用不同堆積,可以執行下列操作:

// Declare a thread-safe, growable, private heap with initial size 0:
CWin32Heap g_stringHeap(0, 0, 0);

// Declare a string manager that uses the private heap:
CAtlStringMgr g_stringMgr(&g_stringHeap); 

若要使用這個私用字串處理常式處理 CString 變數的記憶體,請將指標傳遞給這個處理常式做為參數傳遞至 CString 變數的建構函式:

void PrintPowers(int nBase)
{
   int n = 1;
   for(int nPower = 0; nPower < 10; nPower++)
   {
      // Use the private string manager, instead of the default:
      CString strPower(&g_stringMgr);

      strPower.Format(_T("%d"), n);
      _tprintf_s(_T("%s\n"), strPower);
      n *= nBase;
   }
}

請參閱

概念

Memory Management with CStringT