Главная страница
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.027 c
3-1182153666
mefodiy
2007-06-18 12:01
2007.10.21
SQL запрос с использованием LIKE


3-1178602542
Alex_AA
2007-05-08 09:35
2007.10.21
Поиск в Excel


9-1161516574
Fastics
2006-10-22 15:29
2007.10.21
Реализация физики и столкновений на ODE или Newton.


9-1161520353
Тёма
2006-10-22 16:32
2007.10.21
Прозрачность в GLScene


8-1168288879
Jimmy
2007-01-08 23:41
2007.10.21
Аналог StretchBlt для TMetaCanvas