Aracılığıyla paylaş


Özel Dize Yöneticisi’ni Uygulama (Temel Yöntem)

Dize verileri için bellek ayırma düzenini özelleştirmenin en kolay yolu, ATL tarafından sağlanan CAtlStringMgr sınıfı kullanmak, ancak kendi bellek ayırma yordamlarınızı sağlamaktır. oluşturucu CAtlStringMgr tek bir parametre alır: nesne işaretçisi IAtlMemMgr . IAtlMemMgr bir yığına genel bir arabirim sağlayan soyut bir temel sınıftır. arabirimini IAtlMemMgr kullanarak dize verilerini depolamak CAtlStringMgr için kullanılan belleği ayırır, yeniden ayırır ve serbest bırakır. Arabirimi kendiniz uygulayabilir IAtlMemMgr veya ATL tarafından sağlanan beş bellek yöneticisi sınıfından birini kullanabilirsiniz. ATL tarafından sağlanan bellek yöneticileri, mevcut bellek ayırma olanaklarını sarmalar:

Dize bellek yönetimi amacıyla en kullanışlı sınıf, birden çok bağımsız yığın oluşturmanıza olanak sağlamasıdır CWin32Heap . Örneğin, yalnızca dizeler için ayrı bir yığın kullanmak istiyorsanız aşağıdakileri yapabilirsiniz:

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

Bir değişkenin belleğini yönetmek üzere bu özel dize yöneticisini kullanmak için CString , değişkenin oluşturucusunun parametresi olarak yöneticiye CString bir işaretçi geçirin:

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;
   }
}

Ayrıca bkz.

CStringT ile Bellek Yönetimi