I have seen that in the C or C++ abstract machine, the mere act of forming a point to an invalid point in memory is undefined behavior.
For example
int* arr = new int[10];
int* last = arr + 9; // last element
int* end = arr + 10; // past last element, still ok according to the rules
int* another = arr + 11; // invalid, UB, supposedly, the rest of the program can be invalid
Now suppose, this other code
int* arr; // arr can be invalid already here, UB?
int* another = arr; // forming a pointer to possibly invalid memory, UB?
How is assigning an uninitialized pointer different from forming an invalid pointer by an operation? is it as bad?