You are not really dereferencing anything. The argument of sizeof
is not evaluated, unless it is a VLA. It is explicitly allowed by the language to put whatever "garbage" you want as the argument of sizeof
. The language guarantees that it will not evaluate anything, just perform compile-time analysis of the type of the expression. For example, expression sizeof i++
is guaranteed not to change the value of i
.
The only exception from that rule is Variable Length Arrays. The result of sizeof
for VLAs is a run-time value, which means that the argument is evaluated and must be valid.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…