Ответ зависит от языка, который вы используете.
C / C ++
В C и C ++ ключевым словом было NULL, а в действительности NULL было 0. Было решено, что «0x0000» никогда не будет действительным указателем на объект, и поэтому это значение присваивается, чтобы указать, что оно неверный указатель Тем не менее, это совершенно произвольно. Если вы попытаетесь получить к нему доступ как указатель, он будет вести себя точно так же, как указатель на объект, которого больше нет в памяти, что приведет к возникновению исключения недопустимого указателя. Сам указатель занимает память, но не более чем целочисленный объект. Следовательно, если у вас есть 1000 нулевых указателей, это эквивалент 1000 целых чисел. Если некоторые из этих указателей указывают на допустимые объекты, то использование памяти будет эквивалентно 1000 целым числам плюс память, содержащаяся в этих допустимых указателях. Помните, что в C или C ++,не означает, что память была освобождена, поэтому вы должны явно удалить этот объект, используя dealloc (C) или delete (C ++).
Джава
В отличие от C и C ++, в Java null является просто ключевым словом. Вместо того, чтобы управлять нулем как указатель на объект, он управляется внутри и обрабатывается как литерал. Это устраняет необходимость связывать указатели как целочисленные типы и позволяет Java полностью абстрагировать указатели. Однако даже если Java скрывает это лучше, они все еще являются указателями, то есть 1000 нулевых указателей по-прежнему потребляют эквивалент 1000 целых чисел. Очевидно, что когда они указывают на объекты, во многом как на C и C ++, эти объекты используют память до тех пор, пока на них не ссылаются указатели, однако, в отличие от C и C ++, сборщик мусора забирает их на следующем проходе и освобождает память, не требуя, чтобы вам приходилось отслеживать, какие объекты освобождены, а какие нет, в большинстве случаев (если, например, у вас нет причин для слабой ссылки на объекты).