Czy moglabym prosic o sprawdzenie dlaczego w tym kodzie pojawia sie problem z pamiecia?

Kod:
#include<iostream>
#include<cstring>
using namespace std;

class osoba {
    private:
        char* nazwisko;
        int len;
    public:
        osoba(const char* n = NULL);
        friend ostream &operator<<(ostream &s, const osoba &o);
        friend ostream &operator<<(ostream &s, const osoba *wsk);
};
//******************************************************************8
osoba::osoba(const char *n){
    len = strlen(n);
    nazwisko = new char[len+1];
    strcpy(nazwisko,n);
}
ostream &operator<<(ostream &s, const osoba &o){
    s << o.nazwisko;
    return s;
}

ostream &operator<<(ostream &s, const osoba *wsk){
    s << wsk->nazwisko;
    return s;
}

const int pojemnosc_wektora = 15;

class vector{
        osoba tab1[pojemnosc_wektora];
        int ile_obiektow;
    public:
        vector(): ile_obiektow(0) { } 
        int wstaw(const osoba &nowy, int gdzie = -1);   
        void usun(int nr);
 osoba &co_na(int pozycja) {return tab1[pozycja];} 

        friend ostream& operator<<(ostream & stru, vector &x);
    private:
        void rozsun(int pozycja);
        void zsun(int nr);
};

ostream &operator<<(ostream &stru, vector &spis){
    stru << "     ";
    for (int i = 0; i < spis.ile_obiektow; i++){
        stru << i << ") " << spis.tab1[i] << " ";
    }
    stru << endl;
    return stru;
}
/**********************************************************************************************/
void vector::rozsun(int pozycja){
    for (int i = ile_obiektow; i < pozycja; i--){
        tab1[i] = tab1[i-1];
    }
}

void vector::zsun(int nr){
    for (int i = nr; i < ile_obiektow; i++){
        tab1[i] = tab1[i+1];
    }
}

int vector::wstaw (const osoba &nowy, int gdzie){
    if(ile_obiektow == pojemnosc_wektora){
        cout << "Wektor zostal juz zapelniony\n";
        return 0;
    }
if (gdzie < 0 || gdzie > ile_obiektow){   
        gdzie = ile_obiektow;
    }

    rozsun(gdzie);
    tab1[gdzie] = nowy;
    ile_obiektow++;
    return 1;
}

void vector::usun(int nr){
    if(nr < ile_obiektow){   
        zsun(nr);
        ile_obiektow--;
    }
}

 int main() {
    osoba
        wloch("Vivalidi"),
        niemiec("Bethoveen"),
        austriak("Mozart"),
        polak("Chopin");

    cout << "Przedstawia sie wloch: " << wloch << endl;

    osoba *kapelmistrz = &austriak;
    cout << "Kapelmistrzem jest dzisiaj: " << *kapelmistrz << endl;

    cout << polak << endl;
    
    vector muzycy;
    cout << "sizeof(muzycy)= " << sizeof(muzycy) <<endl;

    muzycy.wstaw(niemiec);
    muzycy.wstaw(wloch);
    cout << muzycy;
}
Z gory bardzo dziekuje za pomoc!