Поделиться через


Implementation of a Custom String Manager (Basic Method)

Самый простой способ настройки схема выделения памяти для строковых данных использовать библиотеку ATL-, класс CAtlStringMgr но предоставляет собственные процедуры выделения памяти. Конструктор для CAtlStringMgr принимает один параметр: указатель на объект IAtlMemMgr. IAtlMemMgr абстрактный базовый класс, который предоставляет универсальный интерфейс куча. С помощью интерфейса IAtlMemMgr, CAtlStringMgr, reallocates и освобождает память, используемая для хранения сведений строки. Самостоятельно любой реализовать интерфейс IAtlMemMgr или использовать одно из 5 библиотеки 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