Bagikan melalui


_realloc_dbg

Merealokasi blok memori yang ditentukan dalam tumpukan dengan memindahkan dan/atau mengubah ukuran blok (hanya versi debug).

Sintaks

void *_realloc_dbg(
   void *userData,
   size_t newSize,
   int blockType,
   const char *filename,
   int linenumber
);

Parameter

userData
Penunjuk ke blok memori yang dialokasikan sebelumnya.

newSize
Ukuran yang diminta untuk blok yang direalokasi (byte).

blockType
Jenis yang diminta untuk blok yang direalokasikan: _CLIENT_BLOCK atau _NORMAL_BLOCK.

filename
Penunjuk ke nama file sumber yang meminta realloc operasi atau NULL.

linenumber
Nomor baris dalam file sumber tempat realloc operasi diminta atau NULL.

Parameter filename dan linenumber hanya tersedia ketika _realloc_dbg telah dipanggil secara eksplisit atau _CRTDBG_MAP_ALLOC konstanta pra-prosesor telah ditentukan.

Nilai hasil

Setelah berhasil diselesaikan, fungsi ini mengembalikan penunjuk ke bagian pengguna dari blok memori yang direalokasikan, memanggil fungsi handler baru, atau mengembalikan NULL. Untuk deskripsi lengkap tentang perilaku pengembalian, lihat bagian Keterangan berikut ini. Untuk informasi selengkapnya tentang bagaimana fungsi handler baru digunakan, lihat realloc fungsi .

Keterangan

_realloc_dbg adalah versi debug dari realloc fungsi. Ketika _DEBUG tidak ditentukan, setiap panggilan ke _realloc_dbg dikurangi menjadi panggilan ke realloc. Baik realloc dan _realloc_dbg realokasi blok memori di tumpukan dasar, tetapi _realloc_dbg mengakomodasi beberapa fitur penelusuran kesalahan: buffer di salah satu sisi bagian pengguna blok untuk menguji kebocoran, parameter jenis blok untuk melacak jenis alokasi tertentu, dan filename/linenumber informasi untuk menentukan asal permintaan alokasi.

_realloc_dbg merealokasi blok memori yang ditentukan dengan sedikit lebih banyak ruang daripada yang diminta newSize. newSize 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 dapat mengakibatkan keduanya memindahkan blok memori asli ke lokasi yang berbeda dalam tumpukan, dan mengubah ukuran blok memori. Jika blok memori dipindahkan, konten blok asli akan ditimpa.

_realloc_dbgerrno diatur ke ENOMEM jika alokasi memori gagal atau 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.

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 debug, lihat Versi debug fungsi alokasi timbunan.

Persyaratan

Rutin Header yang diperlukan
_realloc_dbg <crtdbg.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Pustaka

Debug versi pustaka run-time C saja.

Contoh

Lihat contoh dalam _msize_dbg artikel.

Lihat juga

Rutinitas debug
_malloc_dbg