Implementação de um gerente personalizado de cadeia de caracteres (básico método)

A maneira mais fácil para personalizar o esquema de alocação de memória para dados de cadeia de caracteres é usar ATL- forneceu a classe de CAtlStringMgr mas fornece seu próprio rotinas de alocação de memória.O construtor para CAtlStringMgr aceita um único parâmetro: um ponteiro para um objeto de IAtlMemMgr .IAtlMemMgr é uma classe base abstrata que fornece uma interface genérica a um heap.Usando a interface de IAtlMemMgr , CAtlStringMgr atributos, realoca, e libera memória usada para armazenar dados de cadeia de caracteres.Ou você pode implementar a interface de IAtlMemMgr você mesmo, ou use um dos cinco ATL- forneceu classes gerente de memória.ATL- forneceu recursos existentes de alocação de memória de quebra automática de gerentes de memória simplesmente:

Com o objetivo de gerenciamento de memória de cadeia de caracteres, a classe mais útil é CWin32Heap porque ela permite que você crie heaps independente de múltiplos.Por exemplo, se você quisesse usar um heap separado apenas para cadeias de caracteres, você pode fazer o seguinte:

// 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 usar o gerenciador particular de cadeia de caracteres para gerenciar a memória para um variável de CString , passe um ponteiro para o gerenciador como um parâmetro para o construtor da variável 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;
   }
}

Consulte também

Conceitos

Gerenciamento de memória com CStringT