Share via


사용자 지정 문자열 관리자 구현(기본 방법)

문자열 데이터에 대한 메모리 할당 체계를 사용자 지정하는 가장 쉬운 방법은 ATL 제공 CAtlStringMgr 클래스를 사용하지만 사용자 고유의 메모리 할당 루틴을 제공하는 것입니다. 생성자는 개체에 대한 CAtlStringMgr 포인터인 단일 매개 변수를 IAtlMemMgr 사용합니다. IAtlMemMgr 는 힙에 제네릭 인터페이스를 제공하는 추상 기본 클래스입니다. 인터페이스 CAtlStringMgrIAtlMemMgr 사용하여 문자열 데이터를 저장하는 데 사용되는 메모리를 할당, 재할당 및 해제합니다. 인터페이스를 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;
   }
}

참고 항목

CStringT를 사용한 메모리 관리