free
Bellek bloğunu serbest bırakır veya serbest bırakır.
Sözdizimi
void free(
void *memblock
);
Parametreler
memblock
Boşaltılacak daha önce ayrılmış bellek bloğu.
Açıklamalar
free
işlevi, daha önce , malloc
veya realloc
çağrısı calloc
tarafından ayrılmış bir bellek bloğunu (memblock
) serbest bırakır. Serbest bırakılan bayt sayısı, blok ayrıldığında istenen bayt sayısına eşdeğerdir (veya için realloc
yeniden ayrılır). ise memblock
NULL
, işaretçi yoksayılır ve free
hemen döndürür. Geçersiz bir işaretçiyi serbest bırakırken (, malloc
veya realloc
tarafından calloc
ayrılmamış bir bellek bloğu işaretçisi), sonraki ayırma isteklerini etkileyebilir ve hatalara neden olabilir.
Bellek boşaltılırken bir hata oluşursa, errno
işletim sisteminden hatanın niteliğine ilişkin bilgilerle ayarlanır. Daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Bir bellek bloğu serbest bırakıldıktan sonra kullanılmayan _heapmin
bölgeleri birleştirerek ve bunları işletim sistemine geri bırakarak yığındaki boş bellek miktarını en aza indirir. İşletim sisteminde serbest bırakılmamış bellek, boş havuza geri yüklenir ve yeniden ayırma için kullanılabilir.
Uygulama C çalışma zamanı kitaplıklarının hata ayıklama sürümüyle bağlandığında, free
olarak _free_dbg
çözümlenir. Yığın hata ayıklama işlemi sırasında nasıl yönetilir hakkında daha fazla bilgi için bkz . CRT hata ayıklama yığını.
free
olarak işaretlenir __declspec(noalias)
, yani işlevin genel değişkenleri değiştirmemesi garanti edilir. Daha fazla bilgi için bkz. noalias
.
ile _malloca
ayrılan belleği boşaltmak için kullanın _freea
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
İşlev | Gerekli başlık |
---|---|
free |
<stdlib.h> ve <malloc.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
örneğine malloc
bakın.
Ayrıca bkz.
Bellek ayırma
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea