Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
ВнизКак правильно очищать буффер? Найти похожие ветки
← →
Алик (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.054 c