rem: printf("qm_malloc_init(%x, %d), start=%x\n", address, size, start);
add: DBG("qm_malloc_init(%p, %d), start=%p\n", address, size, start);
context: struct qm_block* qm_malloc_init(char* address, unsigned int size){	char* start;	char* end;	struct qm_block* qm;	unsigned int init_overhead;	int h;		/* make address and size multiple of 8*/	start=(char*)ROUNDUP((unsigned int) address);	printf("qm_malloc_init: QM_OPTIMIZE=%d, /ROUNDTO=%d\n",			QM_MALLOC_OPTIMIZE, QM_MALLOC_OPTIMIZE/ROUNDTO);	printf("qm_malloc_init: QM_HASH_SIZE=%d, qm_block size=%d\n",			QM_HASH_SIZE, sizeof(struct qm_block));	printf("qm_malloc_init(%x, %d), start=%x\n", address, size, start);	if (size<start-address) return 0;	size-=(start-address);	if (size <(MIN_FRAG_SIZE+FRAG_OVERHEAD)) return 0;	size=ROUNDDOWN(size);		init_overhead=ROUNDUP(sizeof(struct qm_block))+sizeof(struct qm_frag)+		sizeof(struct qm_frag_end);	printf("qm_malloc_init: size= %d, init_overhead=%d\n", size, init_overhead);		if (size < init_overhead)	{		/* not enough mem to create our control structures !!!*/		return 0;	}	end=start+size;	qm=(struct qm_block*)start;	memset(qm, 0, sizeof(struct qm_block));	size-=init_overhead;	qm->size=size;	qm->real_used=init_overhead;	qm->max_real_used=qm->real_used;		qm->first_frag=(struct qm_frag*)(start+ROUNDUP(sizeof(struct qm_block)));	qm->last_frag_end=(struct qm_frag_end*)(end-sizeof(struct qm_frag_end));	/* init initial fragment*/	qm->first_frag->size=size;	qm->last_frag_end->size=size;	#ifdef DBG_QM_MALLOC	qm->first_frag->check=ST_CHECK_PATTERN;	qm->last_frag_end->check1=END_CHECK_PATTERN1;	qm->last_frag_end->check2=END_CHECK_PATTERN2;#endif	/* init free_hash* */	for (h=0; h<QM_HASH_SIZE;h++){		qm->free_hash[h].head.u.nxt_free=&(qm->free_hash[h].head);		qm->free_hash[h].tail.prev_free=&(qm->free_hash[h].head);		qm->free_hash[h].head.size=0;		qm->free_hash[h].tail.size=0;	}		/* link initial fragment into the free list*/		qm_insert_free(qm, qm->first_frag);		/*qm->first_frag->u.nxt_free=&(qm->free_lst);	  qm->last_frag_end->prev_free=&(qm->free_lst);	*/			return qm;}