I wrote the following program to test malloc/free:

import std.stdio;
import core.memory;

class ExternalMemoryHandle {
        void *p;

        this() {
                p = GC.malloc(1024);
        }

        ~this() {
                GC.free(p);
        }
}

void main() {
        auto test = new ExternalMemoryHandle();
        writeln("exiting");
}


The philosophy of this program is use class ExternalMemoryHandle as a handle
to some manually managed memory. If a ExternalMemoryHandle is constructed, it
alloc some memory. When this ExternalMemoryHandle is garbage collected, it
free those memory.

However it will fail with OutOfMemoryError. I got the following error when
running this program:

exiting
core.exception.OutOfMemoryError

What's wrong with this tiny program?

Reply via email to