Implementazione di un gestore personalizzato di stringa (metodo di base)

Il modo più semplice per personalizzare la combinazione di allocazione della memoria per i dati in formato stringa è di utilizzare ATL- fornita dalla classe CAtlStringMgr ma fornisce le routine di allocazione della memoria.Il costruttore per CAtlStringMgr accetta un solo parametro: un puntatore a un oggetto IAtlMemMgr.IAtlMemMgr è una classe base astratta che fornisce un'interfaccia generica a un heap.Utilizzando l'interfaccia IAtlMemMgr, CAtlStringMgr, riallocare alloca e libera la memoria utilizzata per archiviare i dati in formato stringa.È possibile implementare l'interfaccia IAtlMemMgr manualmente, o utilizzare uno dei cinque ATL- fornito le classi del gestore di memoria.ATL- fornito con le funzionalità esistenti di allocazione della memoria del wrapping dei gestori della memoria:

Per la gestione della memoria di stringhe, la classe più utile è CWin32Heap perché consente di creare gli heap non più.Ad esempio, se si desidera utilizzare un heap separato solo per le stringhe, effettuare le operazioni seguenti:

// 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); 

Per utilizzare questo gestore privato della stringa per la gestione della memoria per una variabile CString, passare un puntatore all'amministratore come parametro al costruttore della variabile 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;
   }
}

Vedere anche

Concetti

Gestione della memoria con CStringT