[fpc-pascal]StrAlloc and StrDispose of pChars and the like

Jonas Maebe jonas at zeus.rug.ac.be
Wed Nov 14 19:05:13 CET 2001


On woensdag, november 14, 2001, at 05:28 , Cox, Stuart SRM:EX wrote:

> If one is to create pChars you really need to allocate an array of char 
> just
> like the example that Borland supplies with the introduction to pChars 
> in
> the BP7 manual.  They don't mention any invisible allocation word as 
> being
> part of their implementation.

FPC doesn't use an invisible word specifically for pchar's either 
(whether you allocate the memory with stralloc, getmem or whatever), 
because every heap block itself already contains information about its 
length. Further, the only thing stralloc does is call getmem with the 
same argument it received.

strdispose(p) is simply a wrapper for

if assigned(p) then
   begin
     freemem(p);
     p := nil;
   end;

The freemem call without a second parameter comes originally from Delphi 
and lets the heap manager find out how much memory was allocated to that 
pointer and release it.

To change the amount of memory allocated to a pointer (a pchar is a 
pointer to a char, so it works for those just as well), you can use 
reallocmem(p,new_size). And you can still use strdispose() later on...


Jonas





More information about the fpc-pascal mailing list