GC does not delete subclass
Matthias Thurau
Matthiasth at gmx.de
Mon Dec 17 13:50:12 PST 2007
Hi,
I just made some small examples for myself to understand the GC. Here i have a testcase, that has an unexpected behavior for me:
import std.stdio;
static int number = 0;
static int number2 = 0;
class MyClass {
public:
this() { writefln("Constructor %d", number);
myNumber = number; number++;
member = new My2Class(); };
~this() { writefln("Destructor %d", myNumber); };
My2Class member;
int myNumber;
};
class My2Class {
public:
this() { writefln("Sub_Constructor2 %d", number2);
myNumber2 = number2; number2++; };
~this() { writefln("Sub_Destructor2 %d", myNumber2); };
int myNumber2;
};
int main(char[][] args) {
{
scope MyClass A = new MyClass();
}
std.gc.fullCollect();
writefln("The Sub Class from 0 does not get deleted yet!");
MyClass C = new MyClass();
return 0;
};
The Output ist:
Constructor 0
Sub_Constructor2 0
Destructor 0
The Sub Class from 0 does not get deleted yet!
Constructor 1
Sub_Constructor2 1
Sub_Destructor2 1
Destructor 1
Sub_Destructor2 0
More information about the Digitalmars-d
mailing list