Compartir a través de


Implementation of a Custom String Manager (Basic Method)

La manera más fácil de personalizar el esquema de asignación de memoria para los datos de la cadena es utilizar ATL-proporcionó a la clase de CAtlStringMgr pero proporciona posee las rutinas de asignación de memoria. El constructor de CAtlStringMgr toma un único parámetro: un puntero a un objeto de IAtlMemMgr . IAtlMemMgr es una clase base abstracta que proporciona una interfaz genérica a una pila. Mediante la interfaz de IAtlMemMgr , CAtlStringMgr asigna, reasigna, y libera la memoria usada para almacenar datos de cadena. Puede o implementar la interfaz de IAtlMemMgr personalmente, o usar uno de los cinco ATL-proporcionó a clases del administrador de memoria. ATL-proporcionó a las funciones existentes de asignación de memoria del ajuste de los administradores de memoria simplemente:

Con el fin de administración de memoria de cadena, la clase más útil es CWin32Heap porque permite crear pilas independientes. Por ejemplo, si desea utilizar un montón aparte solo para las cadenas, podría hacer lo siguiente:

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

Para utilizar este administrador privado de la cadena para administrar la memoria para una variable de CString , pase un puntero al administrador como parámetro al constructor de la variable de 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;
   }
}

Vea también

Conceptos

Memory Management with CStringT