Wskaźnik do char'a a zamiana wartosci elementu

0

Witam, mam pewne pytanie. Bo dostałem od kolegi taki test do funkcji w którym, jest dziwny fragment :

char * wsk = wskobject->operator()(0,0); // wskobject <- tablica wskaźników char do char*, wywołanie tego operatora zwraca napis 'chrome' ale mniejsza z tym
wsk[0] = 'z';
delete wskobject;

No więc :
czy taka operacja wsk[0] = 'z' zadziała wgl? Bo po uruchomieniu programu konsola sie zawiesza.
Czy po delete wskobject char * wsk powinien przestac wskazywac na wyraz 'chrome' i zostac pusty?

2

wywołanie tego operatora zwraca napis 'chrome' ale mniejsza z tym

No właśnie nie „mniejsza”, bo poniższe przypisanie do wsk[0] jest zależne od tego co właściwie zwraca operator: jak przydzielono pamięć?
Jeśli tam jest return "chrome"; to nie wolno modyfikować tego napisu, a operator powinien zwracać const char.
Jeżeli zwracany jest wskaźnik na tablicę globalną, to ok, ale to raczej błąd projektowy.
Jeżeli alokowana jest nowa tablica (new albo malloc) i strcpy(napis, "chrome"); return napis; to jest ok, ale to znowu błąd projektowy, bo łatwo o wyciek pamięci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1