problem w Dev-Cpp

0

witam. mam pewien problem z operatorem delete w dev-cpp. otoz nie chce on dzialac poprawnie... nie tylko, ze moge wywolywac go wielokrotnie na tym samym obiekcie (utworzonym przez new), ale w dodatku nie kasuje on tego obiektu! nie wiem co z tym fantem zrobic, bo korzystam z "symfonii c++" gdzie pisze jak byk, ze:
a) nie mozna wywolywac dwa razy delete na tym samym obiekcie
b) po delete obiekt przestaje istniec
czy to jest wina dev-cpp?? help!

0

Po zastosowaniu

delete

wskaznik powinien byc rowny null (nie powinien wskazywac na zadna komorke pamieci).
Jest inaczej? Dziwna sprawa...

0

Nieprawda, wskaznik nie powinien pokazywac na NULL i tez nie pokazuje. Pokazuje dalej na ten sam opbszar pamieci, w ktorym moze byc ta sama zawartosc danych co przed zwolnienim, stad moze sie brac zludzenie ze obiekt wciaz istnieje...Po operatorze delete roznica jest taka ze ten obszar pamieci nie nalezy juz do naszego programu.

0

Jak wyżej - delete nie zeruje wskaznika, ponadto sam sprawdz ilosc pamieci przed utworzeniem obiektu, po i po jego zniszczeniu, zobaczysz:

class a{
  public:
    a();
    ~a();

    int b[10000];
};

a::a(){
  b[0]=1;    // wstaw tu breakpointa
}

a::~a(){
  b[0]=0;    // wstaw tu breakpointa
}

main(){
  a* b=new a();
  delete b;
  //delete b;  // powinno wywolac drugi raz, dlatego jest zakaz wielokrotnego deletowania
}
0

Dzięki wielkie! Teraz to ma sens ;)

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