Since my last thread doesn't get much attention I like to ask here: How did you deal with temporary memory? Let's assume that the size is only known at runtime. I have this situation e.g. in Dgame in the capture method: I get the pixel data from my Window with glReadPixel but it is reversed. So I have to reverse it again, but I still need at least temporary memory for one pixel-line which stores the currently swapped pixels. So how would you solve such a situation?

Since D doesn't offer VLA's and alloca is broken (besides the ugly syntax),
I use a scoped wrapper (since scope doesn't do the job):

----
struct scoped(A : T[], T) {
        T[] arr;

        alias arr this;

        this(T[] arr) {
                this.arr = arr;

writefln("Get %d %s's (ptr = %x)", arr.length, T.stringof, arr.ptr);
        }

        ~this() {
                GC.free(this.arr.ptr);
                this.arr = null;
                GC.minimize();
        }
}

void main() {
    // need temp memory
    scoped!(int[]) arr = new int[n];
}
----

And what do you use?

Reply via email to