Odpowiedź zależy od używanego języka.
C / C ++
W C i C ++ słowem kluczowym było NULL, a tak naprawdę NULL było 0. Zdecydowano, że „0x0000” nigdy nie będzie prawidłowym wskaźnikiem do obiektu, a więc taka wartość jest przypisywana w celu wskazania, że to nie jest prawidłowym wskaźnikiem. Jest to jednak całkowicie arbitralne. Jeśli spróbujesz uzyskać do niego dostęp jak wskaźnik, zachowa się on dokładnie tak jak wskaźnik do obiektu, którego już nie ma w pamięci, powodując zgłoszenie wyjątku nieprawidłowego wskaźnika. Sam wskaźnik zajmuje pamięć, ale nie więcej niż zwykły obiekt. Dlatego jeśli masz 1000 zerowych wskaźników, jest to odpowiednik 1000 liczb całkowitych. Jeśli niektóre z tych wskaźników wskazują na prawidłowe obiekty, wówczas użycie pamięci byłoby równoważne 1000 liczb całkowitych plus pamięć zawarta w tych prawidłowych wskaźnikach. Pamiętaj, że w C lub C ++,nie oznacza, że pamięć została zwolniona, więc musisz jawnie usunąć ten obiekt za pomocą dealloc (C) lub delete (C ++).
Jawa
W przeciwieństwie do C i C ++, w Javie null jest jedynie słowem kluczowym. Zamiast zarządzać wartością zerową jak wskaźnikiem do obiektu, jest on zarządzany wewnętrznie i traktowany jak literał. To wyeliminowało potrzebę wiązania wskaźników jako typów całkowitych i pozwala Javie całkowicie wyodrębnić wskaźniki. Jednak nawet jeśli Java lepiej to ukrywa, nadal są wskaźnikami, co oznacza, że 1000 wskaźników zerowych nadal zużywa równowartość 1000 liczb całkowitych. Oczywiście, gdy wskazują na obiekty, podobnie jak C i C ++, pamięć jest zużywana przez te obiekty, dopóki nie odwołują się do nich żadne wskaźniki, jednak w przeciwieństwie do C i C ++, śmieciarz zbiera je przy następnym przejściu i uwalnia pamięć, bez konieczności śledzenia, które obiekty są zwalniane, a które nie, w większości przypadków (chyba że masz powody, aby na przykład słabo odwoływać się do obiektów).