Câu trả lời phụ thuộc vào ngôn ngữ bạn đang sử dụng.
C / C ++
Trong C và C ++, từ khóa là NULL và NULL thực sự là 0. Người ta đã quyết định rằng "0x0000" sẽ không bao giờ trở thành một con trỏ hợp lệ cho một đối tượng và vì vậy đó là giá trị được gán để chỉ ra rằng nó không phải là một con trỏ hợp lệ. Tuy nhiên, nó hoàn toàn tùy ý. Nếu bạn đã cố truy cập nó như một con trỏ, nó sẽ hoạt động chính xác như một con trỏ tới một đối tượng không còn tồn tại trong bộ nhớ, khiến cho một ngoại lệ con trỏ không hợp lệ bị ném. Con trỏ tự chiếm bộ nhớ, nhưng không nhiều hơn một đối tượng số nguyên. Do đó, nếu bạn có 1000 con trỏ null, nó tương đương với 1000 số nguyên. Nếu một số trong các con trỏ đó trỏ đến các đối tượng hợp lệ, thì việc sử dụng bộ nhớ sẽ tương đương với 1000 số nguyên cộng với bộ nhớ có trong các con trỏ hợp lệ đó. Hãy nhớ rằng trong C hoặc C ++,không ngụ ý bộ nhớ đã được phát hành, vì vậy bạn phải xóa rõ ràng đối tượng đó bằng cách sử dụng dealloc (C) hoặc xóa (C ++).
Java
Không giống như trong C và C ++, trong Java null chỉ là một từ khóa. Thay vì quản lý null như một con trỏ tới một đối tượng, nó được quản lý bên trong và được xử lý như một nghĩa đen. Điều này đã loại bỏ sự cần thiết phải liên kết các con trỏ dưới dạng các số nguyên và cho phép Java hoàn toàn loại bỏ các con trỏ. Tuy nhiên, ngay cả khi Java che giấu nó tốt hơn, chúng vẫn là các con trỏ, có nghĩa là 1000 con trỏ null vẫn tiêu thụ tương đương với 1000 số nguyên. Rõ ràng khi chúng trỏ đến các đối tượng, giống như C và C ++, bộ nhớ bị tiêu thụ bởi các đối tượng đó cho đến khi không còn con trỏ tham chiếu đến chúng, tuy nhiên không giống như trong C và C ++, trình thu gom rác nhặt nó trên đường tiếp theo của nó và giải phóng bộ nhớ, mà không yêu cầu bạn phải theo dõi những đối tượng nào được giải phóng và đối tượng nào không, trong hầu hết các trường hợp (trừ khi bạn có lý do để tham chiếu các đối tượng yếu chẳng hạn).