Rezerwacja miejsca w pamięci.

0

Witam.
Próbuje zarezerwować miejsce(new) dla zmiennej typu bool, wszystko niby działa, ale jak próbuje usunąć zmienną(delete) z pamięci to nic się nie dzieje. if`y od tej zmiennej działają i dalej da się ustalać jej wartość.

0

Bo delete mówi tylko że ta pamięć nie jest twoja i tyle. Nikt ci wskaźników do niej nie ukradnie. Wyobraź sobie ze w C++ mozesz ustawić sobie wskaźnik w totalnie losowe miejsce i próbować tam coś czytać albo pisać i też może ci sie udać. C++ nie bawi się w kontrolę tego ;)

0

A da się coś zrobić żeby wykasować zmienną z pamięci? Potrzebuję zmienne tylko do czasu kliknięcia myszką.

0

Aaa... Czyli jak skasuję zmienną z pamięci, ale potem coś się tam wciśnie i będzie mieć wartość, którą używa if to ten if zadziała? Jest jakiś sposób, żeby anulować if bez wprowadzania nowych zmiennych?

0

Operator new przydziela pamięć ze sterty, która dla alokacji o małych rozmiarach trzyma sobie prealokowane bloki pamięci (ze względu na wydajność). Użycie new niekoniecznie spowoduje alokacje faktycznej pamięci, tylko zwrócenie już dostępnego prealokowanego bloku. W takim przypadku operator new tylko oznaczy, że ten blok właśnie stał się zajęty, a operator delete oznaczy, że ten blok jest wolny.
Teraz, żeby otrzymać exception trzeba się odwołać pamięci, która faktycznie nie istnieje. Natomiast prealokowane bloki ze sterty istnieją cały czas stąd nie dostajesz exceptiona nawet jeżeli używając delete oznaczysz taki blok jako wolny a pozniej się do niego odwołasz.

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