Вопрос
Зачем в DELPHI нужно выделение памяти? указатели? Неужели это все для старых компов? Дайте ссылку на доку по этой информации?
Ответ
Указатели — это далеко не для старых машин!
Указатели используются для работы с динамической памятью. Например, создание массива, размер которого заранее не известен. Работа с динамически загружаемыми библиотеками (dll) осуществляется через указатели. Через указатели можно получить доступ к конкретному физическому адресу.
Выделение памяти происходит каждый раз при всего таких объектов, как формы, кнопки… В область памяти помещается экземпляр того или иного объекта. После завершения работы с экземпляром, память необходимо освобождать (обычно это делается в деструкторе автоматически, но есть такие методы как free и destroy). При работе с динамическими библиотеками (dll) это надо делать обязательно.
Самое интересное, что когда вы пишете процедуру типа procedure a(var b: integer) и вызываете ее a(some_var), то в нее передается адрес переменной some_var. Именно по этому адресу процедура изменяет значение some_var;
Про указатели можно прочитать в любом учебнике Turbo Pascal (если я не ошибаюсь, указатели появились, начиная с 5й версии Turbo Pascal'a). В Delphi — все аналогично.
Простенький пример:
procedure TForm1.Button1Click(Sender: TObject);
var
a: ^Integer;
begin
New(a); //Выделение памяти
a^ := 5;
Form1.Caption := IntToStr(a^);
Dispose(a); //Освобождение памяти
end;
Из конференции Expert_FAQ
Copyright 2000-2004 Сообщество Чайников
Контактная информация