СообЧа > База Знаний > Программирование > Delphi

Вопрос

Зачем в 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 Сообщество Чайников
Контактная информация