_freea

Membatalkan alokasi atau membebaskan blok memori.

Sintaks

void _freea(
   void *memblock
);

Parameter

memblock
Blok memori yang dialokasikan sebelumnya untuk dibebaskan.

Nilai hasil

Tidak ada.

Keterangan

Fungsi membatalkan _freea alokasi blok memori (memblock) yang sebelumnya dialokasikan oleh panggilan ke _malloca. _freea memeriksa untuk melihat apakah memori dialokasikan pada tumpukan atau tumpukan. Jika dialokasikan pada tumpukan, _freea tidak melakukan apa-apa. Jika dialokasikan pada tumpukan, jumlah byte yang dibebankan setara dengan jumlah byte yang diminta ketika blok dialokasikan. Jika memblock adalah NULL, penunjuk diabaikan, dan _freea segera kembali. Mencoba membebaskan pointer yang tidak valid (pointer ke blok memori yang tidak dialokasikan oleh _malloca) dapat memengaruhi permintaan alokasi berikutnya dan menyebabkan kesalahan.

_freeafree memanggil secara internal jika menemukan bahwa memori dialokasikan pada tumpukan. Apakah memori berada di tumpukan atau tumpukan ditentukan oleh penanda yang ditempatkan dalam memori di alamat segera sebelum memori yang dialokasikan.

Jika terjadi kesalahan dalam membebaskan memori, errno diatur dengan informasi dari sistem operasi pada sifat kegagalan. Untuk informasi selengkapnya, lihat errno, _doserrno, _sys_errlist, dan _sys_nerr.

Setelah blok memori dibebaskan, _heapmin meminimalkan jumlah memori bebas pada tumpukan dengan menyatukan wilayah yang tidak digunakan dan melepaskannya kembali ke sistem operasi. Memori yang dibebaskan yang tidak dirilis ke sistem operasi dipulihkan ke kumpulan gratis dan tersedia untuk alokasi lagi.

Panggilan ke _freea harus menyertai semua panggilan ke _malloca. Ini juga merupakan kesalahan untuk memanggil _freea dua kali pada memori yang sama. Ketika aplikasi ditautkan dengan versi debug pustaka run-time C, terutama dengan fitur yang diaktifkan dengan _malloc_dbg mendefinisikan _CRTDBG_MAP_ALLOC, lebih mudah untuk menemukan panggilan yang hilang atau diduplikasi ke _freea. Untuk informasi selengkapnya tentang bagaimana tumpukan dikelola selama proses debugging, lihat Tumpukan debug CRT.

_freea ditandai __declspec(noalias), yang berarti bahwa fungsi dijamin tidak memodifikasi variabel global. Untuk informasi selengkapnya, lihat noalias .

Persyaratan

Function Header yang diperlukan
_freea <stdlib.h> dan <malloc.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

Lihat contoh untuk _malloca.

Baca juga

Alokasi memori
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin