Grazie dei suggerimenti, ho cercato di metterli in pratica. La struttura che uso per descrivere la partizione occupata è questa:

codice:
/** Elemento della lista delle partizioni libere */
typedef struct elMap_t {
	/** Puntatore all'inizio della partizione */
	byte *start;
	/** Dimensione della partizione */
	size_t size;
 	/** Puntatore al precedente elemento della lista */
	struct elMap_t *prev;
	/** Puntatore al prossimo elemento della lista */
	struct elMap_t *next;
} elMap;
per sapere l'indirizzo dell'ultimo byte della partizione posso fare:

codice:
m->start + m->size
giusto?

e per sapere se ci sono byte liberi tra questa partizione e la successiva posso fare:

codice:
m->next->start - (m->start + m->size)
giusto?