Главная страница
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.022 c
15-1190313633
korneley
2007-09-20 22:40
2007.10.21
Просто размышления. Если офтопик - рубите...


2-1190573837
Ezorcist
2007-09-23 22:57
2007.10.21
Перевод с delphi на turbo pascal


3-1181663169
ssa
2007-06-12 19:46
2007.10.21
Запись JPEG в БД через запрос


4-1176883424
evgenij_
2007-04-18 12:03
2007.10.21
Stay on Top


15-1190273650
Azize
2007-09-20 11:34
2007.10.21
Посоветуйте книгу