Hi,

thanks for your very clear answer. In fact this is chilling me as I am thinking to the huge amount of memory leaks that I certainly have in my developements...

This means that whenever the assignement operator ":=" is used with TStringLists, the recieving list shall never be created!

As a consequence I have another question. Suppose I have a function that returns a TStringList:

Myfunction(): TStringList;

I must have inside a line like:

Result:=TStringList.Create;

Let A be a TStringList, I have two ways to catch the result of my function:

A:=Myfunction();

or

A.Assign(Myfunction());

In the first case, if do A.Free, I release the memory allocated by the function. What's arriving in the second case? I can do A.Free, but does that action will also release the memory allocated by the function?

By the way, do you have some tricks to detect this kind of error?

Thanks again,
Gilles Marcou



_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to