Где именно стандарт C ++ скажем, разыменование неинициализированного указателя является неопределенным поведением?

Пока я не могу найти, как сделать вывод, что следующее:

int* ptr;
*ptr = 0;

не определено

Прежде всего, там 5.3.1 / 1 утверждается, что * означает косвенное обращение, которое преобразует T * в T . Но это ничего не говорит о UB.

Затем часто цитируется 3.7.3.2/4, где говорится, что использование функции освобождения для ненулевого указателя делает указатель недействительным, а более позднее использование недействительного указателя - UB. Но в приведенном выше коде ничего не говорится об освобождении.

Как можно вывести UB в приведенном выше коде?

11
задан sharptooth 26 November 2010 в 14:01
поделиться