Это не безопасно. Это не UB, но оно не определено стандартом. А значит, компилятор может что-то там соптимизитровать и поломать код.
В
документации написано:
Every value of pointer type is one of the following:
* a pointer to an object or function (in which case the pointer is said to point to the object or function), or
* a pointer past the end of an object, or
* the null pointer value for that type, or
* an invalid pointer value.
Т.е.
arr
у вас, вообще-то, invalid pointer value перед циклом.
Плюс там же написано:
Any other use of an invalid pointer value has implementation-defined behavior.
А GPT, как это почти всегда и происходит - нагаллюционировал вам бред. Это не база знаний, не поисковик по информации, а лишь модель, которая пытается создать текст,
похожий на текст из обучающей выборки. Если что-то часто встречается там слово-в-слово, то вам может и повести. Если ваш вопрос хоть чуть-чуть не отвечается первой страницей гугловой выдачи - вам почти гарантированно не повезет.
Edit: немного не то написал. Так делать "не рекомендуется", а не "небезопасно". Оно генерирует непереносимый код. Если у вас на конкретном компиляторе с конкретными ключами работает, то, в общем-то, можно использовать. Но лучше не надо.