I don't use real pointers at all. Memory is stored in the global variable m, which is indexed by an uint32 (which I call k). My addresses are indexes. As the smallest bucket is 16 bytes, so the indexes are multiples of 4. So yes, in theory I could store 3 additional states (x+1, x+2, x+3), not even 2 bits. But I had to remove them everywhere...
Do you use these? What for?