[c++] operator new

0

Witam. Czy poniższe zapisy wywołują domyślnie operator new??

char *tekst1 = "test1"
char *tekst2 = "test2"
0

Nie, niby czemu? o_O
To są stałe wiec są na sztywno wstawiane w odpowiednie miejsce w pamieci w trakcie uruchamiania programu.

0

W programie, miałem coś takiego.
Zdeklarowałem sobie kilka zmiennych globalnych:

char *tekst1 = "test1";
char *tekst2 = "test2";

Następnie w programie głównym napisałem:

delete []tekst1;
tekst1 = new char[strlen(temp)+1];
strcmp(tekst1, temp);

delete []tekst2;
tekst2 = new char[strlen(temp)+1];
strcmp(tekst2, temp);

Przy zwalnianiu pamięci dla tekst2 otrzymuje błąd.

0

Żeby coś zwolnić przez delete[] to musisz to najpierw zaalokować przez new[]. Ty wbijasz literały stringowe, więc próbujesz zwolnić coś, co raczej się do zwalniania nie nadaje.

0

OK, dzięki za pomoc. Myślałem, że instrukcje z pierwszego postu domyślnie wywołują operator new (pomyliłem się). Gdy przydzielam pamięć operatorem new w konstruktorze wtedy wszystko działa prawidłowo.

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