Aracılığıyla paylaş


_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ı _mallocatarafı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 _mallocaayrı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_errlistve _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_ALLOCetkinleştirilen özelliklerle _malloc_dbg bağlandığında, öğesine yapılan eksik veya yinelenen çağrıları _freeabulmak 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 _mallocabakın.

Ayrıca bkz.

Bellek ayırma
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin