3 ms·
> if P does not point to valid memory, then dereferencing it is UB IIRC, simply making P point to anything other than an object or 1 past the end of an array i
by 0xcde4c3db 10y ago
> if P does not point to valid memory, then dereferencing it is UB
IIRC, simply making P point to anything other than an object or 1 past the end of an array is already UB. I suspect that this is because some architectures have dedicated address registers and can take an exception when an invalid address is loaded/calculated instead of doing it when the memory access happens.
- lmm 10y ago> IIRC, simply making P point to anything other than an object or 1 past the end of an array is already UB. I don't think this is true in the strict sense you're describing it. Certainly forming a null pointer isn't UB as I understand it, only dereferencing one.
- 0xcde4c3db 10y agoYes, NULL is another exception that I forgot. I'm not sure this is ever explicitly stated as a distinct rule in the standard, but it seems to be implied by various arithmetic and conversion operations on pointers being UB if the result doesn't point to a valid object.