Najpierw alokujesz tylko jeden znak char
:
char *wsk = new char;
Potem błędnie przypisujesz pod ten wskaźnik obszar całej tablicy (której rozmiaru w tej chwili nie znasz...):
wsk = name;
Potem zwracasz cały pobrany obszar name
, a zaalokowany wskaźnik na jeden znak jest gubiony:
Skutkuje to wyciekiem pamięci, bo obszar, który zaalokowałeś jako jeden znak był przechowywany w wsk
, które teraz już tego obszaru nie pokazuje. Nie wiemy gdzie jest ten obszar, a taki zgubiony zaalokowany obszar nam "wycieka".
return wsk;
W funkcji main()
tworzysz wskaźnik, pod który przypisujesz pojedynczy znak:
char *schowek = ptr(imie);
Aby następnie wyłuskać z niego jego wartość:
cout<<*schowek;
Weź pod uwagę, że wyłuskanie, które tutaj zrobiłeś powoduje, że ZAWSZE pobierać będziesz pierwszy znak. Ten kod nie wyświetli Ci imienia, nawet, gdyby schowek
zawierał całe imie (a nie zawiera, co wyjaśniłem wcześniej).