Więc natknąłem się na ten fragment kodu i podczas gdy ja kodowałem w C/C++ przez około 5 lat, nie mogę pojąć, dlaczego ktokolwiek chciałby to zrobić. Rozumiem, dlaczego chcesz ustawić wskaźnik na NULL
po zwolnieniu pamięci, ale na pewno nie rozumiem, dlaczego ktoś chciałby zrobić coś przeciwnego (wygląda na to, że mam wyciek pamięci).Ustawienie wskaźnika na wartość NULL przed usunięciem
Po drugie, jestem prawie pewien, że nie trzeba sprawdzać, czy wskaźnik jest NULL
przed ustawieniem go na wartość NULL i usunięciem, as discussed here.
if(m_pio)
{
m_pio = NULL;
delete m_pio;
}
To jest implementacja przecieku pamięci ... prawdopodobnie przypadkowo przesunięta o jedną linię w górę lub w dół. – dtech
Moje _guess_ jest wynikiem złego łączenia w jedną stronę, szybkiej i brudnej edycji lub jakiegoś rodzaju refaktoryzacji, którego nie sprawdzono. Popełniłem błędy podobne do tego, co było wynikiem oczywiście bezsensownego (ale wciąż działającego) kodu, którego pochodzenie było widoczne dopiero po przejrzeniu historii źródłowej. –
.. Nie potrzebowali nawet instrukcji "if". Usuwanie wartości zerowej jest w porządku. –