Nierozumiem dlaczego podany program działa xd
Ma on wyświetlać określoną liczbe liter wpisanego ciągu. Według mnie funkcja lef powinna zwrócić wskaźnik do pustego miejsca w pamięci ponieważ wskażnik p został stworzony wewnątrz tej funkcji i powinien zniknąć po jej wykonaniu wraz z tym na co wskazuje.Myślałem że pamięć jest zwalniana po wykonaniu się fynkcji Dlaczego tak nie jest ? Program działa a powinien się wywalić xd
#include <iostream>
#include<cstdlib>
using namespace std;
char * lef(const char *str,int n=3)
{
char * p=new char [n+1];
int i;
for( i=0;i<n;i++)
{
p[i]=str[i];
}
p[i+1]='\n';
return p;
}
int main()
{
char sample[50] ;
cin.get(sample,50);
char* ps=lef(sample);
cout<<ps;
return 0;
}