다음을 통해 공유


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

문자열 데이터 사용 하는 ATL에서 제공 하는 것에 대 한 메모리 할당 구성표를 사용자 지정 하는 가장 쉬운 방법은 CAtlStringMgr 클래스 있지만 자신의 메모리 할당 루틴을 제공 합니다.생성자에 대 한 CAtlStringMgr 매개 변수가 하나:에 대 한 포인터는 IAtlMemMgr 개체입니다.IAtlMemMgr힙 하는 제네릭 인터페이스를 제공 하는 추상 기본 클래스가입니다.사용 하는 IAtlMemMgr 인터페이스는 CAtlStringMgr 할당 및 다시 할당에서 문자열 데이터를 저장 하는 데 사용 된 메모리를 해제 합니다.어느 구현할 수는 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에 메모리 관리