I like to think I’m a super-smart programmer, or maybe I’m just an idiot.
Im just a guy with a pretty spare brain, but I don’t think Im smart enough to not make a joke about it.
0x0 is a special value in x86-based systems that can be used to store a null byte, where a byte can be thought of as a word of memory. In x86-64 systems, this would mean that a null byte is stored as the top bit of a byte value. If my memory is correct, this value is actually used to store a null pointer in most x86 processors. This can be used to store a pointer to a null byte.
It’s been a while since I’ve dealt with NullPointerOut.0x64, and this is not a good thing. This means that an x86-64 system doesn’t have the option to store a pointer to a null byte in its own program.
For an example of this, look at the infamous null-terminated string, 0x0, which is used to store a null pointer. This is a very common occurrence, and a lot of code does this. This is particularly bad because the stack is used to hold data so the memory layout of the system can be preserved. In C, a null pointer is used to store the address of a null byte.
This is why it’s good to remember that C is a statically typed language. So we can always check in the debugger before we do anything that this may not be the case.
As it turns out, the 0x0 string is a null pointer in C. But the problem here is you can’t just put anything into a null pointer. Instead, the 0x0 string is a special null pointer that’s an empty array of char. It is used to store a null pointer.
C does not have null pointers. In C, the null pointer is just a special type of pointer that stores a null pointer. In C, there is no such thing as an empty array of char.
This is a pretty big deal because in C, the null pointer does not equal 0. If you do a null pointer reference in C, it returns 0, which is not zero. But in C, the null pointer is used in a special way. When you do a null pointer reference, the compiler will actually do the right thing and assign the value to a variable of the same type as the pointer. Then in the code, you can simply put whatever you want into that variable.
But 0x0 has no value. A null pointer is the same as 0. So the compiler will basically do the correct thing.