Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Frees any extra memory previously allocated by the string but no longer needed.
void FreeExtra( );
Remarks
This should reduce the memory overhead consumed by the string object. The method reallocates the buffer to the exact length returned by GetLength.
Example
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());
Remarks
The output from this example is as follows:
Alloc length is 1031, String length is 1024
Alloc length is 1031, String length is 15
Alloc length is 15, String length is 15
Requirements
Header: atlsimpstr.h