A prima vista mi verrebbe in mente che a din_vett2 assegno lo stesso indirizzo della locazione di memoria puntata da din_vett, pero sicuramente non e cosi...
Invece è proprio così. In quel modo tu assegni l'indirizzo di din_vett a din_vett2.

Il problema viene qui:
codice:
    for( int l= 0; l < 20; l++ )
      load_vector( din_vett2, l );
Infatti tu consideri din_vett2 come un puntatore ad un vettore di 20 elementi, ma in realtà sta puntando a din_vett che è di 10 elementi.

Nota bene che quando assegni l'indirizzo di din_vett a din_vett2 non deallochi la memoria precedentemente puntata da din_vett2. Inoltre se alla fine din_vett2 sarà uguale a din_vett allora dovrai chiamare una volta delete[], altrimenti cerchi di deallocare la stessa area di memoria due volte.