_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.
_freea
free
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk