The difference is given in units of "int" not bytes; there is room for 12 ints between the pointers malloc returns. that's 48 bytes, if size_of(int)=4. The extra 8 bytes are presumably used by the machinery behind malloc to keep whatever it wants to keep track of for the area you allocated. For instance, it might include the size of the memory chunk allocated for later use by free().