До сих пор я не могу найти, как вывести следующее:
int* ptr;
*ptr = 0;
- поведение undefined.
Прежде всего, там 5.3.1/1, в котором указано, что *
означает косвенность, которая преобразует T*
в T
. Но это ничего не говорит о UB.
Затем часто цитируется 3.7.3.2/4, в котором говорится, что использование функции освобождения от ненулевого указателя делает указатель недействительным, а последующее использование недопустимого указателя - UB. Но в приведенном выше коде нет ничего об освобождении.
Как можно вывести UB в коде выше?