3 ms·
But if the assertion fails, the program is aborted before the pointer would have been dereferenced, making it not UB. This explanation is bogus.
by pwdisswordfishy 6mo ago
But if the assertion fails, the program is aborted before the pointer would have been dereferenced, making it not UB. This explanation is bogus.
- saagarjha 6mo agoOnly if the assert is active. It basically means that the code is invalid when NDEBUG is set.
- quuxplusone 6mo agoWhen NDEBUG is set, there is no test, no assertion, at all. So yes, this code has UB if you set NDEBUG and then pass it a null pointer — but that's obvious. The code does exactly what it looks like it does; there's no tricks or time travel hiding here.