예제 #1
0
파일: gc_mns.c 프로젝트: hanjoes/gc
static void *gc_alloc(int size) {
    void *o = gc_alloc_space(size);
    if(NULL == o) {
        gc_clear_mark();
        gc_mark();
        o = gc_alloc_space(size);
        if (o == NULL) {
            if (DEBUG) printf("memory is full");
            return NULL;
        }
    }
    return o;
}
예제 #2
0
파일: gc_ms.c 프로젝트: YuanyuanZh/gc-1
Vector *gc_alloc_vector(int size) {
	Vector *v = gc_alloc_space(sizeof(Vector) + size * sizeof(double)+1);
	v->header.marked = 0;
	v->length = size;
	v->name = "Vector";
	memset(v->data, 0, size*sizeof(double));
	gc_add_objects(v);
	return v;
}
예제 #3
0
파일: gc_ms.c 프로젝트: YuanyuanZh/gc-1
String *gc_alloc_string(int size) {
	String *s;
	s = (String *) gc_alloc_space(sizeof (String) + size + 1);
	s->header.marked = 0;
	memset(s->str, 0, size);
	s->length = size;
	s->name = "String";
	gc_add_objects(s);
	return s;
}