Proste zwalnianie pamięci

0

Witam

Mam taki przykladowy kodzik :

#include <iostream>

using namespace std;

class a
{
    int x, y;

public:
     a()
     {
       x=10;
       y=10;
     }
  void pokaz()
  {
      cout << x << "   "<< y <<endl;
  }
};

int main()
{
    a *wsk;
    wsk = new a[5];

    wsk[0].pokaz();

    delete [] wsk;

    wsk[0].pokaz();
    wsk[1].pokaz();
    return 0;
} 

I nie wiem dlaczego jak zwolnie pamiec metodą delete [] wsk; to wywolujac funkcje pokaz dla obiektu na ktory pokazuje wsk[0] to rzeczywiscie wyswietlaja mi się jakies tam śmieci, a dla obiektu na ktory pokazuje wsk[1] juz mam dobre wartosci 10, 10.
Czy metoda delete [] wsk nie powinna działać przypadkiem tak samo dla wsk[0],....wsk[4] ??

0

Było całkiem niedawno: Zwalnianie pamięci alokowanej dynamicznie i pewnie wcześniej też.

W skrócie: to co widzisz, spowodowane jest tym, że "zwalnianie" nie oznacza usuwania/zerowania czy czegokolwiek takiego. To tylko Twoja deklaracja, że już nie potrzebujesz tego bloku pamięci.
Nie zmienia to faktu, że takie odwołanie jest niepoprawne.

0

Nie popisałem się kreatywnością, dzięki za odpowiedz.

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