Функции Dispose и FreeMem
Вот такой вопрос: чем отличаются эти функции?
:P
Для начала следует отметить, что они работают в парах:New(p)и Dispose(p), и GetMem(var p:poiter; size: word) и FreeMem(var p:poiter; size: word) соответственно.Отличаются тем, что в первом случае мы не можем задать размер выделяемой для переменной памяти, а во втором-можем.Может оказаться так,что переменной не хватит места чтобы разместиться в памяти и при работе программы появиться сообщение об ошибке. Мой тебе совет: никогда не обращайся к уже уничтоженой динамической переменной.Наш преподаватель по практике говорит ,что это в принципе обсурдно(сначала удалили ссылку, а потом вдруг она нам снова понадобилась-нех было удалять!!!;) ) и даже может привести к краху опер. системы!!!
...что-то эксплойтом запахло...:roll:
:P
Отличаются тем, что в первом случае мы не можем задать размер выделяемой для переменной памяти, а во втором-можем.Может оказаться так,что переменной не хватит места чтобы разместиться в памяти и при работе программы появиться сообщение об ошибке.
Что-то я не понял, что отличие только в том что в одной функции можно указывать размер освобождаемой память а во второй нет?
Что-то я не понял, что отличие только в том что в одной функции можно указывать размер освобождаемой память а во второй нет?
Ну типа того ты всё правильно понял, я вот пользуюсь только new(p) и dispose(p),на практике нигде ни приходилось использовать getmem и freemem.;)
{$APPTYPE CONSOLE}
uses
SysUtils;
const
n=10;
type
T = array [0..n-1] of integer;
pT = ^ T;
var
p: Pt;
i: integer;
begin
new(p);
for i:=0 to n-1 do p^:=i;
dispose(p);
for i:=0 to n-1 do write(p^);
readln;
end.
После этого на экране 0 1 2 3 ..
спасибо;)!