Hi!
I find code:
[code]
import c.stdlib;
import c.stdlib;
import std.outofmemory;

class Foo{
        static void[] buffer;
        static int bufindex;
        static const int bufsize = 100;
        static this(){
                void *p;
                p = malloc(bufsize);
                if (!p)
                throw new OutOfMemory;
                gc.addRange(p, p + bufsize);
                buffer = p[0 .. bufsize];
        }
        static ~this(){
                if (buffer.length){
                        gc.removeRange(buffer);
                        free(buffer);
                        buffer = null;
                }
        }
        new(uint sz){
                void *p;
                p = &buffer[bufindex];
                bufindex += sz;
                if (bufindex > buffer.length)
                throw new OutOfMemory;
                return p;
        }
        delete(void* p){
                assert(0);
        }
        static int mark(){
                return bufindex;
        }

        static void release(int i){
                bufindex = i;
        }
}
void test(){
        int m = Foo.mark();
        Foo f1 = new Foo; // allocate
        Foo f2 = new Foo; // allocate
        Foo.release(m); // deallocate f1 and f2
}
[/code]
When I try compile i have some error:[code]
vander@vander-VirtualBox:~/Pulpit/D$ gdc Memory.d -o Memory
Memory.d:1: Error: module stdlib is in file 'c/stdlib.d' which cannot be read import path[0] = /usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.4.5/../../../../../include/d/4.4.5/i686-linux-gnu import path[1] = /usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.4.5/../../../../../include/d/4.4.5
vander@vander-VirtualBox:~/Pulpit/D$[/code]
When i comment import c.stdlib;
I have error
[code]
vander@vander-VirtualBox:~/Pulpit/D$ gdc Memory.d -o Memory
Memory.d:11: Error: undefined identifier malloc
Memory.d:11: Error: function expected before (), not __error of type _error_
Memory.d:13: Error: identifier 'OutOfMemory' is not defined
Memory.d:13: Error: OutOfMemory is used as a type
Memory.d:13: Error: new can only create structs, dynamic arrays or class objects, not void's
Memory.d:13: Error: can only throw class objects, not type void*
Memory.d:14: Error: undefined identifier gc, did you mean static import gcc?
Error: no property 'addRange' for type 'TOK149'
Memory.d:14: Error: function expected before (), not __error of type TOK149 Memory.d:19: Error: undefined identifier gc, did you mean static import gcc?
Error: no property 'removeRange' for type 'TOK149'
Memory.d:19: Error: function expected before (), not __error of type TOK149 Memory.d:20: Error: undefined identifier free, did you mean function fread? Memory.d:20: Error: function expected before (), not __error of type _error_
Memory.d:29: Error: identifier 'OutOfMemory' is not defined
Memory.d:29: Error: OutOfMemory is used as a type
Memory.d:29: Error: new can only create structs, dynamic arrays or class objects, not void's
Memory.d:29: Error: can only throw class objects, not type void*
vander@vander-VirtualBox:~/Pulpit/D$
[/code]
What's can be wrong?

Reply via email to