_freea
Bellek bloğunu serbest bırakır veya serbest bırakır.
Sözdizimi
void _freea(
void *memblock
);
Parametreler
memblock
Boşaltılacak daha önce ayrılmış bellek bloğu.
Dönüş değeri
Yok.
Açıklamalar
işlevi, _freea
daha önce çağrısı _malloca
tarafından ayrılmış olan bir bellek bloğunu (memblock
) serbest bırakır. _freea
, belleğin yığında mı yoksa yığında mı ayrıldığını denetler. Yığında ayrılmışsa hiçbir _freea
şey yapmaz. Yığında ayrılmışsa, serbest bayt sayısı blok ayrılırken istenen bayt sayısına eşdeğerdir. ise memblock
NULL
, işaretçi yoksayılır ve _freea
hemen döndürür. Geçersiz bir işaretçiyi serbest bırakırken (tarafından _malloca
ayrılmamış bir bellek bloğu işaretçisi), sonraki ayırma isteklerini etkileyebilir ve hatalara neden olabilir.
_freea
, belleğin yığında ayrıldığını bulursa dahili olarak çağırır free
. Belleğin yığında mı yoksa yığında mı olduğu, ayrılan belleğin hemen önündeki adreste belleğe yerleştirilen bir işaretçi tarafından belirlenir.
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.
çağrısı, tüm aramalarına _freea
eşlik etmelidir _malloca
. Aynı bellekte iki kez çağrı _freea
yapmak da bir hatadır. Uygulama C çalışma zamanı kitaplıklarının bir hata ayıklama sürümüyle, özellikle de tanımlayarak _CRTDBG_MAP_ALLOC
etkinleştirilen özelliklerle _malloc_dbg
bağlandığında, öğesine yapılan eksik veya yinelenen çağrıları _freea
bulmak daha kolaydır. 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ı.
_freea
olarak işaretlenir __declspec(noalias)
, yani işlevin genel değişkenleri değiştirmemesi garanti edilir. Daha fazla bilgi için bkz. noalias
.
Gereksinimler
İşlev | Gerekli başlık |
---|---|
_freea |
<stdlib.h> ve <malloc.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
örneğine _malloca
bakın.
Ayrıca bkz.
Bellek ayırma
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin