• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

tablica stringów i delete[]

0 głosów
407 wizyt
pytanie zadane 18 lutego 2017 w C i C++ przez Suiko Początkujący (350 p.)

Otóż dzisiaj tworząc program napotkałem na dziwny/ciekawy problem.

string * p;
int j=0;

int main(){
cin>>j;
p = new string[j];

/* długie nic */

delete p[];
}

W przedostatniej linii występują 2 błędy a program się nie kompiluje:  "expected an expression " i "syntax error: ']'"

Usunięcie znaku tablicy "[]" naprawi problem jednak.. w końcu dynamicznie zaalokowana została tablica stringów, a nie pojedyńcza sztuka.

I tutaj nie do końca rozumiem dlaczego kompilator traktuje to w taki sposób, może źle coś zakodowałem? Albo nie można tak alokowac tablicy stringów? Proszę o odpowiedź, pozdrawiam.

 

 

 

 

2 odpowiedzi

+3 głosów
odpowiedź 18 lutego 2017 przez 10kw10 Pasjonat (22,880 p.)
wybrane 18 lutego 2017 przez Suiko
 
Najlepsza
delete []p;

nie korzystaj ze zmiennych globalnych.

+2 głosów
odpowiedź 18 lutego 2017 przez Dorion300 Szeryf (90,250 p.)
edycja 18 lutego 2017 przez Dorion300

Powinno być:

delete [] p;

Program nie wie czy wskaźnik jest na tablicę czy nie więc przyjmuje "delete p" bez problemu.

Podobne pytania

0 głosów
1 odpowiedź 12,185 wizyt
pytanie zadane 7 sierpnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
2 odpowiedzi 575 wizyt
pytanie zadane 9 lutego 2019 w C i C++ przez jankustosz1 Nałogowiec (37,030 p.)
0 głosów
1 odpowiedź 1,153 wizyt

93,776 zapytań

142,732 odpowiedzi

323,384 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...