_aligned_recalloc_dbg
Mengubah ukuran blok memori yang dialokasikan dengan _aligned_malloc
atau _aligned_offset_malloc
dan menginisialisasi memori menjadi 0 (hanya versi debug).
Sintaks
void * _aligned_recalloc_dbg(
void * memblock,
size_t num,
size_t size,
size_t alignment,
const char *filename,
int linenumber
);
Parameter
memblock
Penunjuk blok memori saat ini.
number
Jumlah elemen.
size
Ukuran dalam byte dari setiap elemen.
alignment
Nilai perataan, yang harus berupa kekuatan bilangan bulat 2.
filename
Penunjuk ke nama file sumber yang meminta operasi alokasi atau NULL
.
linenumber
Nomor baris dalam file sumber tempat operasi alokasi diminta atau NULL
.
Nilai hasil
_aligned_recalloc_dbg
void
mengembalikan pointer ke blok memori yang dialokasikan (dan mungkin dipindahkan). Nilai yang dikembalikan adalah NULL
jika ukurannya nol dan argumen buffer tidak NULL
, atau jika tidak ada cukup memori yang tersedia untuk memperluas blok ke ukuran yang diberikan. Dalam kasus pertama, blok asli dibeberkan. Dalam kasus kedua, blok asli tidak berubah. Nilai pengembalian menunjuk ke ruang penyimpanan yang cocok diselaraskan untuk penyimpanan jenis objek apa pun. Untuk mendapatkan penunjuk ke jenis selain void
, gunakan jenis cast pada nilai yang dikembalikan.
Ini adalah kesalahan untuk merealokasi memori dan mengubah perataan blok.
Keterangan
_aligned_recalloc_dbg
adalah versi debug dari _aligned_recalloc
fungsi. Ketika _DEBUG
tidak ditentukan, setiap panggilan ke _aligned_recalloc_dbg
dikurangi menjadi panggilan ke _aligned_recalloc
. Baik _aligned_recalloc
dan _aligned_recalloc_dbg
realokasi blok memori di tumpukan dasar, tetapi _aligned_recalloc_dbg
mengakomodasi beberapa fitur debugging: buffer di salah satu sisi bagian pengguna blok untuk menguji kebocoran, dan filename
/linenumber
informasi untuk menentukan asal permintaan alokasi. Melacak jenis alokasi tertentu dengan parameter jenis blok bukan fitur debug yang didukung untuk alokasi yang selaras. Alokasi yang diratakan akan muncul sebagai _NORMAL_BLOCK
jenis blok.
_aligned_recalloc_dbg
merealokasi blok memori yang ditentukan dengan sedikit lebih banyak ruang daripada ukuran yang diminta (number
* size
) yang mungkin lebih besar atau kurang dari ukuran blok memori yang dialokasikan awalnya. Ruang ekstra digunakan oleh manajer timbunan debug untuk menautkan blok memori debug dan untuk menyediakan aplikasi dengan informasi header debug dan menimpa buffer. Realokasi mungkin memindahkan blok memori asli ke lokasi yang berbeda di tumpukan, dan mengubah ukuran blok memori. Bagian pengguna dari blok diisi dengan nilai 0xCD, dan buffer penimpaan diisi dengan 0xFD.
_aligned_recalloc_dbg
errno
diatur ke ENOMEM
jika alokasi memori gagal; EINVAL
dikembalikan jika jumlah memori yang diperlukan (termasuk overhead yang disebutkan sebelumnya) melebihi _HEAP_MAXREQ
. Untuk informasi tentang ini dan kode kesalahan lainnya, lihat errno
, , _doserrno
_sys_errlist
, dan _sys_nerr
.
Selain itu, _aligned_recalloc_dbg
memvalidasi parameternya. Jika alignment
bukan kekuatan 2, fungsi ini memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi ini mengembalikan NULL
dan mengatur errno
ke EINVAL
.
Untuk informasi tentang bagaimana blok memori dialokasikan, diinisialisasi, dan dikelola dalam versi debug timbunan dasar, lihat detail timbunan debug CRT. Untuk informasi tentang jenis blok alokasi dan cara penggunaannya, lihat Jenis blok pada tumpukan debug. Untuk informasi tentang perbedaan antara fungsi timbunan standar dan versi debugnya, lihat Versi debug fungsi alokasi timbunan.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_aligned_recalloc_dbg |
<crtdbg.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Pustaka
Debug versi pustaka run-time C saja.
Baca juga
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