` Printed Icetips Article

Icetips Article



Clarion in general: New and Dispose
2005-01-07 -- Robert Peros
 
Newsgroups: softvelocity.clarion.language

> Several months ago, maybe in 2003, there was an interesting discussion
> about how to deal with situations where you need to NEW a variable in
> a method but you can't dispose of it easily, such as:
>
> MyMethod   Procedure(String pS)
> NewS  &String
>  Code
>  NewS &= NEW STRING(Size(pS)*2)
>  NewS = pS & pS
>  Return(NewS)
>
> You can't dispose of this and this would cause memory leak (as far as
> I know)  Some people posted a really nifty way to call the method back
> to dispose of the variable but I have lost this and don't remember
> exactly how it was done.  Anyone recall this?

No,but if I correct understand, look at the ABFILE.clw(again :-))
! Choose the buffer size for a given string
! Must be at least one byte but other than that may clip
! Then allocate string and copy in value
DupString PROCEDURE(STRING St)!,*STRING
SizeIs SIGNED,AUTO
NS &STRING,AUTO
  CODE
    SizeIs = LEN(CLIP(St))
    NS &= NEW STRING (CHOOSE(SizeIs = 0,1,SizeIs))
    NS = St
    RETURN NS

Return value is ref. to STRING and you  have responsibility for
DISPOSE time.

R.



Printed May 3, 2024, 4:11 am
This article has been viewed/printed 35115 times.
Google search has resulted in 4 hits on this article since January 25, 2004.