On most systems not every bit in a pointer will be used, but it depends on the target.
Here is a comment that has more details:
Basically pointer tagging is a bit of a trick/hack to store extra information in pointers, but it requires understanding how exactly pointers work on the target architecture, these “unused bits” are also increasingly used for other purposes, so basically you have to make sure you understand the target hardware and the software running on it, to make sure you aren’t doing something that doesn’t work. Using alignment bits is the simplest and most portable.