Re: cString operator= with same buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jon Burgess on Sunday 20 November 2005 20:01:
> In the normal case you'd be correct, the destructor would be called
> twice and free up both, but in the case that the cStrings are equal the
> destructor will only be called once on the new cString. There is nothing
> which will destruct the old cString. I wrote the quick test app as
> attached and valgrind seems to agree with me.

I see, didn't think of this. So we either need also a check for equality of 
references or just forget about it completely, as both situations would be 
rather theoretical.
So could we agree on

if(&String == this) return *this;
if(s!=String.s)
{
  free(s);
}
s = String.s ? strdup(String.s) : NULL;

This will avoid the memory leak you pointed out and beahve the way you would 
expect from an assignment operator?

Greetings
Holger


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux