[fpc-devel] StrDispose FreeMem with size

Daniël Mantione daniel.mantione at freepascal.org
Fri Oct 13 10:04:25 CEST 2006



Op Fri, 13 Oct 2006, schreef Micha Nelissen:

> Daniël Mantione wrote:
> > No, it is a concious decision and Delphi compatible. The TP heap manager
> > did not store the size of a block, so the size parameter was necessary.
> > It was also possible to free only parts of blocks.
> > 
> > This is not possible with the FPC heap manager, it frees the entire heap
> > block. So the size has no function.
> 
> Oh ok, I didn't know; thought it was like an assertion check. But why is there
> a FreeMemSize in the heap manager then ? It could've been:
> 
> function FreeMemSize(P: pointer; S: ptrint): ptrint;
> begin
> { ignore S: cannot free blocks partially }
> Result := FreeMem(P);
> end;
> 
> I think no recent heap manager can free blocks partially ?

I think the idea is that if you want, you can write and install a heap 
manager that uses the size. In such case you implement 
freemem(pointer,size), and freemem(pointer) then results in a runtime 
error.

Daniël


More information about the fpc-devel mailing list