讀取已釋放的指標的值
即使只是讀取被釋放的指標的值(即不試圖取消引用指標),也是未定義的行為(UB),例如
char *p = malloc(5);
free(p);
if (p == NULL) /* NOTE: even without dereferencing, this may have UB */
{
}
引用 ISO / IEC 9899:2011 ,第 6.2.4 節§2:
[…]當指標指向(或剛剛過去)的物件到達其生命週期的末尾時,指標的值變得不確定。
對於任何事物使用不確定的記憶體,包括明顯無害的比較或算術,如果值可以是該型別的陷阱表示,則可能具有未定義的行為。