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!