language: D (dmd) (dmd-2.042)
date: 547 days 0 hours ago
link:
visibility: public
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");
}
 
  • 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