CSimpleStringT::FreeExtra
前に文字列によって割り当てられた不要な別個のメモリを解放しません。
void FreeExtra( );
解説
これには、文字列オブジェクトによって実装されるメモリのオーバーヘッドを減らす必要があります。メソッドは GetLengthによって返される正確な長さにバッファーを再割り当てします。
使用例
CAtlString basestr;
IAtlStringMgr* pMgr;
pMgr= basestr.GetManager();
ASSERT(pMgr != NULL);
// Create a CSimpleString with 28 characters
CSimpleString str(_T("Many sports are fun to play."), 28, pMgr);
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
// Assigning a smaller string won't cause CSimpleString to free its
// memory, because it assumes the string will grow again anyway.
str = _T("Soccer is best!");
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
// This call forces CSimpleString to release the extra
// memory it doesn't need.
str.FreeExtra();
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
解説
この例によって、次のような出力が生成されます。
Alloc length is 1031, String length is 1024
Alloc length is 1031, String length is 15
Alloc length is 15, String length is 15
必要条件
ヘッダー : atlsimpstr.h