Potential memory leak?
Eldar Insafutdinov
e.insafutdinov at gmail.com
Sun Nov 29 14:51:47 PST 2009
Qian Xu Wrote:
> Hi All,
>
> I am using QtD to do some gui stuff. As the QtD documentation described, Qt-
> data types should be declared with keyword "scope", so that all variables
> can be deallocated in a right order.
>
> I found a memory leak problem accidentally, when I executed the following
> code very frequently:
>
> // public QRegion united(QRegion region) {...}
>
> scope regionA = new QRegion;
> scope regionB = regionA.united(anotherRegion); // Good Example
> scope regionA = regionA.united(anotherRegion); // Bad Example
>
> I create a variable regionA and unite it with another region. The result of
> the function united is assigned to variable regionB. Everything is fine.
>
> The third line sounds be correct as well. A new instance will be created and
> then the variable regionA will be assigned to this new instance, the old
> instance will be deallocated as soon as the code exits its scope.
>
> However the old instance, where the variable regionA previously was pointed
> to, still exists.
>
> I cannot reproceduce this problem with simple D data types.
> But do you think this is a bug of dmd 1.051?
>
> Qian Xu
>
>
Hi,
You only have to use scope for top-level QObject subclasses. For anything else you should use auto. Nevertheless, it would be useful if you submit a bug report.
Thanks.
More information about the Digitalmars-d-learn
mailing list