Cevap, kullandığınız dile bağlıdır.
C / C ++
C ve C ++ 'da, anahtar kelime NULL ve NULL' ın gerçekte 0 olduğu şeydi. "0x0000" öğesinin hiçbir zaman bir nesneye geçerli bir işaretçi olmayacağına karar verildi ve bu nedenle, bunu belirtmek için atanan değer bu oldu. geçerli bir işaretçi değil. Ancak, tamamen keyfi. Bir işaretçi gibi erişmeye çalıştıysanız, tam olarak bellekte bulunmayan bir nesneye bir işaretçi gibi davranarak geçersiz bir işaretçi istisnasının atılmasına neden olur. İşaretçinin kendisi hafızayı kaplar, ancak bir tamsayı nesnesinden daha fazla değildir. Dolayısıyla, 1000 boş işaretleyiciniz varsa, 1000 tam sayıya eşdeğerdir. Bu işaretçilerden bazıları geçerli nesnelere işaret ediyorsa, o zaman hafıza kullanımı 1000 tam sayıya ve bu geçerli işaretçilerde bulunan hafızaya eşdeğer olacaktır. Unutma, C veya C ++değil açıkça (C ++) bu nesne kullanılarak dealloc (C) silmek veya silmeniz gerekir böylece bellek, serbest bırakıldı ima.
Java
C ve C ++ 'dan farklı olarak, Java'da null sadece bir anahtar kelimedir. Bir nesneye bir işaretçi gibi null yönetmek yerine, dahili olarak yönetilir ve değişmez gibi davranılır. Bu, işaretçilere tam sayı türleri olarak bağlanma gereksinimini ortadan kaldırır ve Java'nın işaretçileri tamamen soyutlamasına olanak tanır. Bununla birlikte, Java daha iyi gizlese bile, hala göstericilerdir, yani 1000 sıfır işaretçi hala 1000 tam sayıya eşdeğer tüketir. Açıkça görülüyor ki, C ve C ++ gibi nesnelere işaret ettikleri zaman, bu nesneler tarafından daha fazla işaretçi atıfta bulunmadıkça bellek tüketiliyor, ancak C ve C ++ 'dan farklı olarak, çöp toplayıcı onu bir sonraki geçişte alır ve belleği boşaltır. hangi durumlarda serbest bırakıldığını ve hangi nesnelerin olmadıklarını takip etmenize gerek kalmadan, çoğu durumda (örneğin nesnelere zayıf bir şekilde başvuruda bulunma nedenleriniz olmadığı sürece).