rendered paste bodyconst size_t MAXMESSAGES = 200;
const size_t MESSAGE_SIZE = 160;
const size_t BLOCK_SIZE = 64;
const size_t BLOCKS_PER_MESSAGE = MESSAGE_SIZE / BLOCK_SIZE + 1;
const size_t BLOCKS = MAXMESSAGE * BLOCKS_PER_MESSAGE;
const size_t metadata_in_bytes = sizeof(mdata) * MAXMESSAGES;
const size_t bitmap_size_in_bytes = DATABLOCKS / CHAR_BIT + 1;
const size_t blocks_in_bytes = blocks * BLOCK_SIZE;
void *memory_area = malloc(metadata_in_bytes + bitmap_size_in_bytes +
blocks_in_bytes);
/* FIXME: alignment! */
struct mdata *metadata = (struct mdata*) memory_area;
char *bitmap = ((void*)metadata) + metadata_in_bytes;
/* FIXME: alignment! */
char **datablocks = (char**)(((void*)bitmap) + bitmap_size_in_bytes);
for (size_t i = 1; i != BLOCKS; ++i)
datablocks[i] = ((void*)datablocks[i-1]) + BLOCK_SIZE;