C/C++ pointerek tartalma is törlődik-e?
2014-07-02T09:52:19+02:00
2014-07-02T10:51:04+02:00
2022-07-19T08:20:38+02:00
Sident
class c_pathfind{ private: c_ptile* pmap[256][256]; int n, m; c_ptile* start, * goal; c_ptile* list1[256*256]; c_ptile* list2[256*256]; c_path* path; public: c_pathfind(c_map* where, c_point* start1, c_point* goal1); bool is_in_list1(c_ptile* which); bool is_in_list2(c_ptile* what); void add_list1(c_ptile* what); void add_list2(c_ptile* what); int list1_empty(); c_path* get_path(); };
c_pathfind* a = new c_pathfind(...);
delete a;

Ebben az esetben pl. a list1, list2 mutatóknak a helyén lévő adat is törlődni fog, vagy csak maga az adat memóriacímét tartalmazó változók( mutatók) törlődnek?

Előre is köszönöm, sejtem a választ, és elnézést, ha értelmetlen a kérdés, kezdő programozó vagyok, igyekszem minél tisztább kódot írni. :)
Mutasd a teljes hozzászólást!
Nekem nem világos a kérdésed.
Amúgy igen a delete a HEAP-en lévő terültet szabadítja fel. Amennyiben több pointer is ugyanoda mutat, akkor a többi oda mutató pointer már az érvénytelen, felszabadított területre fog hivatkozni..
Mutasd a teljes hozzászólást!

  • Szia!

    Nem C-s vagyok, de gondolkodjunk logikusan: Az osztálynak azt mondtad meg, hogy legyen birtokában egy mutató, ami mutat (majd) valahova! Addig amíg nem teszel a mutatóba konkrét memória címet, nem tartalmaz semmit. Ha nem tartalmaz semmit, akkor azt sem tudja törölni. A mutatók értéke létrehozás után 0 lesz ... azaz null.

    De puding próbája az evés! Próbáld ki!

    BySzi
    Mutasd a teljes hozzászólást!
  • Szerintem mutató létrehozásánál a mutató értéke nem 0, hanem valamit (számomra) random szám, mint amikor egy változót létrehozok, de nem adok neki értéket.

    Nem másoltam be a teljes kódot, elnézést. A konstruktor hoz létre objektumokat és a mutatókat a memóriacímükre állítja. Ez teljesen az én hibám, a függvénykifejtéseket nem másoltam be.
    Mutasd a teljes hozzászólást!
  • Nekem nem világos a kérdésed.
    Amúgy igen a delete a HEAP-en lévő terültet szabadítja fel. Amennyiben több pointer is ugyanoda mutat, akkor a többi oda mutató pointer már az érvénytelen, felszabadított területre fog hivatkozni..
    Mutasd a teljes hozzászólást!
  • Szerintem mutató létrehozásánál a mutató értéke nem 0...

    Nem bizony!
    Mutasd a teljes hozzászólást!
abcd