Where is pointer metadata stored?

c++, metadata, pointers

Solution

It isn't stored anywhere, per-se. The compiler looks at the type of the ptr and turns the ++ operation into an increment of the correct number of bytes.

Problem

Could be that I am overlooking something obvious, but where is pointer metadata stored? For instance if I have a 32-bit int pointer `ptr` and I execute `ptr++` it knows to advance 4 bytes in memory. However, if I have a 64-bit int pointer it knows to advance 8 bytes. So who keeps track of what type of pointer `ptr` is and where is it stored? For simplicity you can limit this to C++.

Original source