Главная страница
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.02 c
3-1181812956
Antoneiro
2007-06-14 13:22
2007.10.21
DATASET в EXCEL/XML и обратно


2-1191158146
alex_ant
2007-09-30 17:15
2007.10.21
Унифицированный способ сравнивать массивы?


2-1190972872
Riply
2007-09-28 13:47
2007.10.21
FreeLibrary для самой себя из APC-нити


2-1191255641
Jkt
2007-10-01 20:20
2007.10.21
Переобразование xls в dbf4


1-1186384502
Dmitry_177
2007-08-06 11:15
2007.10.21
Как сделать ComboBox, чтобы при вводе строки был выбор как в IE