Этот метод освобождает любую дополнительную память, предварительно занятую строкой, но больше ненужную. Это должно уменьшить память используемую строковым объектом. Метод приводит буфер к точной длине, возвращенной GetLength.
void FreeExtra( );
Следующий пример печатает три строки, показанные ниже при Выводе.
#include <afx.h>
void PrintLengths (CString* str)
{
_tprintf ("Длина Распределения - %d, Строковая длина - %d\n ",
str. GetAllocLength (), str. GetLength ());
}
void main ()
{
// Создать CString с 1024 символами
CString str ('x', 1024);
PrintLengths (str);
/* Присвоение меньшей строки не будет освобождать память CString , поскольку это предполагает, что строка будет расти снова так или иначе.
*/
str = _T ("Хоккей является Лучшим! ");
PrintLengths (str);
// Этот запрос вынуждает CString освобождать дополнительное пространство
// эта память не нужна.
str. FreeExtra ();
PrintLengths (str);
}
Вывод
Длина распределения - 1024, Строковая длина - 1024
Длина распределения - 1024, Строковая длина - 24
Длина распределения - 64, Строковая длина - 24
---