1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | import std.stdio; import std.string; import core.memory; import std.random; struct C { static void*[] boşYerler; int i; double d; char c; this(int i, double d, char c) { this.i = i; this.d = d; this.c = c; } this(this) { writeln("this(this)"); } // Dönüş türü yazılmasa bile new(uint büyüklük) { writeln("new çağrıldı"); writeln("boşYerler: ", boşYerler); if (boşYerler.length == 0) { boşYerler ~= GC.malloc(C.sizeof); writeln("GC'den yer ayrıldı"); } C * yer = cast(C*)boşYerler[$-1]; writefln("yer ayrıldı: %s", yer); boşYerler = boşYerler[0..$-1]; return yer; } delete(void * boşYer) { writefln("delete çağrıldı: %s", boşYer); if (boşYer) { boşYerler ~= boşYer; } } string toString() const { return format("(%s,%s,%s)", i, d, c); } } void main() { foreach (i; 0 .. 3) { int adet = uniform(1, 10); C*[] ayrılanlar = new C*[adet]; foreach (j; 0 .. adet) { ayrılanlar ~= new C(42, 1.25, 'a'); } foreach (yer; ayrılanlar) { delete yer; } } // C.bilgiVer("sonra"); } |
aW1wb3J0IHN0ZC5zdGRpbzsKaW1wb3J0IHN0ZC5zdHJpbmc7CmltcG9ydCBjb3JlLm1lbW9yeTsKaW1wb3J0IHN0ZC5yYW5kb207CgpzdHJ1Y3QgQwp7CiAgICBzdGF0aWMgdm9pZCpbXSBib8WfWWVybGVyOwoKICAgIGludCBpOwogICAgZG91YmxlIGQ7CiAgICBjaGFyIGM7CiAgICAKICAgIHRoaXMoaW50IGksIGRvdWJsZSBkLCBjaGFyIGMpCiAgICB7CiAgICAgICAgdGhpcy5pID0gaTsKICAgICAgICB0aGlzLmQgPSBkOwogICAgICAgIHRoaXMuYyA9IGM7CiAgICB9CiAgICAKCgogICAgdGhpcyh0aGlzKQogICAgewogICAgICAgIHdyaXRlbG4oInRoaXModGhpcykiKTsKICAgIH0KCiAgICAvLyBEw7Zuw7zFnyB0w7xyw7wgeWF6xLFsbWFzYSBiaWxlIAogICAgbmV3KHVpbnQgYsO8ecO8a2zDvGspCiAgICB7CiAgICAgICAgd3JpdGVsbigibmV3IMOnYcSfcsSxbGTEsSIpOwogICAgICAgIHdyaXRlbG4oImJvxZ9ZZXJsZXI6ICIsIGJvxZ9ZZXJsZXIpOwoKICAgICAgICBpZiAoYm/Fn1llcmxlci5sZW5ndGggPT0gMCkgewogICAgICAgICAgICBib8WfWWVybGVyIH49IEdDLm1hbGxvYyhDLnNpemVvZik7CiAgICAgICAgICAgIHdyaXRlbG4oIkdDJ2RlbiB5ZXIgYXlyxLFsZMSxIik7CiAgICAgICAgfQoKICAgICAgICBDICogeWVyID0gY2FzdChDKilib8WfWWVybGVyWyQtMV07CiAgICAgICAgd3JpdGVmbG4oInllciBheXLEsWxkxLE6ICVzIiwgeWVyKTsKCiAgICAgICAgYm/Fn1llcmxlciA9IGJvxZ9ZZXJsZXJbMC4uJC0xXTsKICAgICAgICByZXR1cm4geWVyOwogICAgfQoKICAgIGRlbGV0ZSh2b2lkICogYm/Fn1llcikKICAgIHsKICAgICAgICB3cml0ZWZsbigiZGVsZXRlIMOnYcSfcsSxbGTEsTogJXMiLCBib8WfWWVyKTsKICAgICAgICBpZiAoYm/Fn1llcikgewogICAgICAgICAgICBib8WfWWVybGVyIH49IGJvxZ9ZZXI7CiAgICAgICAgfQogICAgfQoKICAgIHN0cmluZyB0b1N0cmluZygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGZvcm1hdCgiKCVzLCVzLCVzKSIsIGksIGQsIGMpOwogICAgfQp9Cgp2b2lkIG1haW4oKQp7CiAgICBmb3JlYWNoIChpOyAwIC4uIDMpIHsKICAgICAgICBpbnQgYWRldCA9IHVuaWZvcm0oMSwgMTApOwogICAgICAgIEMqW10gYXlyxLFsYW5sYXIgPSBuZXcgQypbYWRldF07CgogICAgICAgIGZvcmVhY2ggKGo7IDAgLi4gYWRldCkgewogICAgICAgICAgICBheXLEsWxhbmxhciB+PSBuZXcgQyg0MiwgMS4yNSwgJ2EnKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKHllcjsgYXlyxLFsYW5sYXIpIHsKICAgICAgICAgICAgZGVsZXRlIHllcjsKICAgICAgICB9CiAgICB9CgovLyAgICAgQy5iaWxnaVZlcigic29ucmEiKTsKfQo=
-
upload with new input
-
result: Success time: 0s memory: 2156 kB returned value: 0
new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BEE50 new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BEE30 new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BEE10 new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BEDF0 new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BEDD0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: B75BEE50 delete çağrıldı: B75BEE30 delete çağrıldı: B75BEE10 delete çağrıldı: B75BEDF0 delete çağrıldı: B75BEDD0 new çağrıldı boşYerler: B75BEE50 B75BEE30 B75BEE10 B75BEDF0 B75BEDD0 yer ayrıldı: B75BEDD0 new çağrıldı boşYerler: B75BEE50 B75BEE30 B75BEE10 B75BEDF0 yer ayrıldı: B75BEDF0 new çağrıldı boşYerler: B75BEE50 B75BEE30 B75BEE10 yer ayrıldı: B75BEE10 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: B75BEDD0 delete çağrıldı: B75BEDF0 delete çağrıldı: B75BEE10 new çağrıldı boşYerler: B75BEE50 B75BEE30 B75BEDD0 B75BEDF0 B75BEE10 yer ayrıldı: B75BEE10 new çağrıldı boşYerler: B75BEE50 B75BEE30 B75BEDD0 B75BEDF0 yer ayrıldı: B75BEDF0 new çağrıldı boşYerler: B75BEE50 B75BEE30 B75BEDD0 yer ayrıldı: B75BEDD0 new çağrıldı boşYerler: B75BEE50 B75BEE30 yer ayrıldı: B75BEE30 new çağrıldı boşYerler: B75BEE50 yer ayrıldı: B75BEE50 new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BED80 new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BED60 new çağrıldı boşYerler: GC'den yer ayrıldı yer ayrıldı: B75BED40 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: 0 delete çağrıldı: B75BEE10 delete çağrıldı: B75BEDF0 delete çağrıldı: B75BEDD0 delete çağrıldı: B75BEE30 delete çağrıldı: B75BEE50 delete çağrıldı: B75BED80 delete çağrıldı: B75BED60 delete çağrıldı: B75BED40



