896 Глава 14

int   fastcall NewFreeMemfvoid* p)
{

dealloc = _msize(p);

Ndealloc ++;

return mm01d->FreeMem(p);

)

void* _fastcall NewReallocMem(void* p, int Size)
{

alloc += Size;

dealloc = _msize(p) ;

Nalloc++;

Ndealloc ++;

return mm01d->ReallocMem(p, Size);

)

fastcall TFormI::TForml(TComponent* Owner)
: TForm(Owner)

mmNew = new TMemoryManager();

mmOld = new TMemoryManager();

mmNew->GetMem = NewGetMem;

mmNew->FreeMem = NewFreeMem;

mmNew->ReallocMem = NewReallocMem;

GetMemoryManager(*mm01d) ;

SetMemoryManager(*mmNew) ;

void   fastcall TFormI::ButtonlClick(TObject *Sender)

(
Labell->Caption = "Nalloc = "+IntToStr(Nalloc)+

"Ndealloc = "+IntToStr(Ndealloc)+

" выделено " +IntToStr(alloc)

" освобождено " +IntToStr(dealloc);

}

В этом примере при щелчке на кнопке Buttoni в метке Labell отображается
сообщение о динамическом распределении памяти.

14.17 Прочие функции C++ и C++Builder

функция	синтаксис / описание	файл
vastart	void vastart(valist ар, lastfix)Макрос устанавливает ар на первую переменную, передаваемую в функции, использующие списки аргументов произвольной длины; lastfix — последний переданный в функцию обязательный аргумент	stdarg.h
vaarg	type vaarg(valist ар, type)Макрос возвращает текущий аргумент списка переменной длины типа type и переводит указатель ар на следующий аргумент; предварительно указатель должен быть установлен с помощью vastart или vaarg	stdarg.h
vaend	void vaend(valist ар)Макрос обеспечивает завершение передачи в функцию списка аргументов произвольной длина, обработанного макросами va start и va arg	stdarg.h