Si me pueden explicar lo que estoy haciendo mal, sería de gran ayuda, así puedo entenderlo

Aquí el código:
Código
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int *Redimensionar(int *p,int c_adicionales, int _tam_de_p); int main(int argc, char *argv[]) { srand(time(0)); int *x=nullptr,n; cout<<"ingrese el tamanio del arreglo"<<endl; cin>>n; x=new int [n]; for(int i=0;i<n;i++) { x[i]=rand()%200; } for(int i=0;i<n;i++) { cout<<x[i]<<" "; } cout<<endl; for(int i=0;i<n+2;i++) { delete []x; } int ceros; cout<<"Ingrese la nueva cantidad: "; cin>>ceros; x=Redimensionar(x,ceros,n); //Por que me da basura en los dos primeros valores? for(int i=0;i<n+ceros;i++) { cout<<x[i]<<" "; } return 0; } int *Redimensionar(int *p, int c_adicionales, int _tam_de_p){ int *aux=nullptr; int _tam=_tam_de_p+c_adicionales; aux=new int [_tam]; for(int i=0;i<_tam_de_p;i++) { aux[i]=p[i]; } for(int i=_tam_de_p+1;i<_tam;i++) { aux[i]=0; } return aux; }