iHutch, it isn't allocated.whoops, I thought you meant line 3
@Catfish: It certainly isn't portable, and as such i'd say it is undefined behavior, because it isn't a language feature.
int *pi = newint;
int *aux1 = pi + 1; // not UB (corrected by Cubbi)
int* pi2 = newint[1] ;
int* aux2 = pi2 + 1; // not UB
When an expression that has integral type is added to or subtracted from a pointer ...
If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.
int* pi3 = reinterpret_cast<int*>(0xB8000) ; // implementation defined
A value of integral type or enumeration type can be explicitly converted to a pointer. A pointer converted to an integer of sufficient size (if any such exists on the implementation) and back to the same pointer type will have its original value; mappings between pointers and integers are otherwise implementation-defined.
int *aux1 = pi + 1; is not UB per one paragraph higher "For the purposes of these operators, a pointer to a nonarray object behaves the same as a pointer to the first element of an array of length one" -- this produces a pointer one past the end of this "array of length one"