Freigeben über


Implementierung eines benutzerdefinierten Zeichenfolgenmanagers (grundlegende Methode)

Die einfachste Möglichkeit zum Anpassen des Speicherzuordnungsschemas für Zeichenfolgendaten besteht darin, die von ATL bereitgestellte CAtlStringMgr Klasse zu verwenden, aber Ihre eigenen Speicherzuweisungsroutinen bereitzustellen. Der Konstruktor für CAtlStringMgr einen einzelnen Parameter: einen Zeiger auf ein IAtlMemMgr Objekt. IAtlMemMgr ist eine abstrakte Basisklasse, die eine generische Schnittstelle zu einem Heap bereitstellt. Mithilfe der IAtlMemMgr Schnittstelle werden die CAtlStringMgr Zuweisungen, Zuordnungen und Zuordnungen freigegeben und der Speicher freigegeben, der zum Speichern von Zeichenfolgendaten verwendet wird. Sie können die IAtlMemMgr Schnittstelle entweder selbst implementieren oder eine der fünf von ATL bereitgestellten Speicher-Manager-Klassen verwenden. Die von ATL bereitgestellten Speichermanager schließen einfach vorhandene Speicherzuweisungseinrichtungen ein:

Zum Zweck der Zeichenfolgenspeicherverwaltung ist CWin32Heap die nützlichste Klasse, da Sie mehrere unabhängige Heaps erstellen können. Wenn Sie beispielsweise nur für Zeichenfolgen einen separaten Heap verwenden möchten, können Sie die folgenden Aktionen ausführen:

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

Um diesen privaten Zeichenfolgen-Manager zum Verwalten des Arbeitsspeichers für eine CString Variable zu verwenden, übergeben Sie einen Zeiger als Parameter an den Manager an den Konstruktor der CString Variablen:

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;
   }
}

Siehe auch

Speicherverwaltung mit CStringT