Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Как правильно очищать буффер?   Найти похожие ветки 

 
Алик   (2007-09-27 23:28) [0]

Добрый вечер

В проге я выделяю память под буффер. В конце память надо освободить, как лучше это сделать?

var  Buffer : PChar;
begin
  Buffer := PChar(AllocMem(10));
...
Так
  Buffer := PChar(AllocMem(0));
или
   FreeMem(Buffer);
или
   Finalize(Buffer);
или
   Dispose(Buffer);
end;


 
Anatoly Podgoretsky ©   (2007-09-27 23:38) [1]

Description

AllocMem allocates a block of the given size on the heap. Each byte in the allocated buffer is set to zero. To dispose the buffer, use FreeMem.


 
Johnmen ©   (2007-09-27 23:40) [2]

Нажать F1 на AllocMem и почитать, наверное, очень трудно?


 
Алик   (2007-09-27 23:47) [3]

FreeMem работает нормально когда буффер создан, но если буффер еще не создан, а в проге вызывавется Freemem, то идет сбой. Например:

try
 if <условие x> = True then begin
                                      Buffer := PChar(AllocMem(10));
                                       ....
                                      end
 else
    Exit;

finally
 FreeMem(Buffer);
end;


 
Anatoly Podgoretsky ©   (2007-09-27 23:49) [4]

> Алик  (27.09.2007 23:47:03)  [3]

А нафига ты пытаешься освобождать невыделеную память?


 
{RASkov} ©   (2007-09-27 23:51) [5]

> [3] Алик   (27.09.07 23:47)

if not <условие x> then Exit else
try
 Buffer := PChar(AllocMem(10));
 ....
finally
 FreeMem(Buffer);
end;


 
Алик   (2007-09-27 23:53) [6]

А как узнать выделена память под буфер или нет?
SizeOf(Buffer) ?


 
{RASkov} ©   (2007-09-28 00:00) [7]

> [6] Алик   (27.09.07 23:53)
> SizeOf(Buffer) ?

Всегда будет одно и то же...

> А как узнать выделена память под буфер или нет?

Никак....
или другими словами если <условие x> и выполнилась строка <Buffer := PChar(AllocMem(10));> то выделено...


 
jack128_   (2007-09-28 00:11) [8]


> А как узнать выделена память под буфер или нет?

P := nil;
try
 if <условие>  then
   P := AllocMem(Random(10));
 ...
finally
 if P <> nil then
  FreeMem(P);
end;



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
2-1190633921
alshtam
2007-09-24 15:38
2007.10.21
ресурс


6-1171790033
santey
2007-02-18 12:13
2007.10.21
Как установить IP адрес


1-1186549318
lecavalie
2007-08-08 09:01
2007.10.21
Подскажите плз. Delphi + Web/wap интерфейс


2-1190829137
AKA
2007-09-26 21:52
2007.10.21
Как перетащить картинку со stringgrida в image???


2-1191060534
Pacific
2007-09-29 14:08
2007.10.21
Процесс