Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Функции Dispose и FreeMem

268
29 апреля 2006 года
Михаил
587 / / 25.06.2005
Вот такой вопрос: чем отличаются эти функции?
13K
29 апреля 2006 года
Spirale
21 / / 17.03.2006
Цитата:
Originally posted by Михаил
Вот такой вопрос: чем отличаются эти функции?


:P
Для начала следует отметить, что они работают в парах:New(p)и Dispose(p), и GetMem(var p:poiter; size: word) и FreeMem(var p:poiter; size: word) соответственно.Отличаются тем, что в первом случае мы не можем задать размер выделяемой для переменной памяти, а во втором-можем.Может оказаться так,что переменной не хватит места чтобы разместиться в памяти и при работе программы появиться сообщение об ошибке. Мой тебе совет: никогда не обращайся к уже уничтоженой динамической переменной.Наш преподаватель по практике говорит ,что это в принципе обсурдно(сначала удалили ссылку, а потом вдруг она нам снова понадобилась-нех было удалять!!!;) ) и даже может привести к краху опер. системы!!!

...что-то эксплойтом запахло...:roll:

268
29 апреля 2006 года
Михаил
587 / / 25.06.2005
Цитата:
Originally posted by Spirale
:P
Отличаются тем, что в первом случае мы не можем задать размер выделяемой для переменной памяти, а во втором-можем.Может оказаться так,что переменной не хватит места чтобы разместиться в памяти и при работе программы появиться сообщение об ошибке.



Что-то я не понял, что отличие только в том что в одной функции можно указывать размер освобождаемой память а во второй нет?

13K
01 мая 2006 года
Spirale
21 / / 17.03.2006
Цитата:
Originally posted by Михаил
Что-то я не понял, что отличие только в том что в одной функции можно указывать размер освобождаемой память а во второй нет?


Ну типа того ты всё правильно понял, я вот пользуюсь только new(p) и dispose(p),на практике нигде ни приходилось использовать getmem и freemem.;)

27K
16 сентября 2007 года
derevenge
4 / / 14.04.2007
Не могу понять, а как такое может работать? %-|
Код:
program Project1;

{$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 ..
247
17 сентября 2007 года
wanja
1.2K / / 03.02.2003
Да запросто. Dispose же не затирает выделенный склероз, а прсто говорит ОС, что он свободен, и его может выделить себе кто-нибудь еще.
27K
18 сентября 2007 года
derevenge
4 / / 14.04.2007
О.. а это тема!
спасибо;)!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог