+ /**
+ * Address to the start of the malloc()ed memory block.
+ *
+ * This is mostly needed because memory should be aligned to the word
+ * size, so we have to adjust data pointers to start at an address
+ * multiple of the word size. Then, our header could not be at the start
+ * of the block. We need to keep the beginning of the block address to be
+ * able to free() it.
+ */
+ void* block_start = null;
+