First of all whenever you use the operatornew, you have to free the allocated memory when your work is done with the varibale( pointers, memory addresses), you free it by
apllyingdelete [] variable-name(pointer name)

on line 76 you have numbers = newint(size); but I see nodelete [] numbers at all-> and change numbers = newint(size) into numbers = newint[size];

second what are you doing at line 97 int shiftedArray[size]; is size known at the compile time ? If not, that is the problem, instean use theoperatornew
, for example int* shiftedArray = newint[size];and free
the memory when your work is done, at the end of line 107, after calling displayNumbers, you
should add then delete [] shiftedArray