Witam
Podczas zabawy z łańcuchami znakowymi, podczas alokacji pamięci natchnąłem się na alokacje dynamiczną za pomocą strlen(), jednak mój kompilator odrzucał to i występował błąd.
char fly[10] = "latajacy";
char *pp; //specjalnie nie został zainicjalizowany.
pp = fly;
std::cout << "adres pp, " << (int *)fly << "\nadres fly, " << (int*) pp << std::endl; //poprawne
//alokacja nowego miejsca w pamięci dla wskaźnika pp
pp = new char [10]; //taka alokacja nie powoduje błędów.
strcpy(pp,fly);
std::cout << "alokacja nowego w miejsca pamieci dla pp \n\tadres pp, "
<< (int *)fly << "\n\tadres fly, " << (int *) pp << std::endl << std::endl
//jednak taki zapis powoduje błąd kompilatora, jednak przed wystąpieniem błędu program włącza się i wyświetla poprawną alokacje.
pp = new char (strlen(fly)); //
strcpy(pp,fly);
std::cout << "alokacja nowego w miejsca pamieci dla pp \n\tadres pp, "
<< (int *)fly << "\n\tadres fly, " << (int *) pp << std::endl << std::endl