Bagikan melalui


_aligned_offset_realloc_dbg

Mengubah ukuran blok memori yang dialokasikan dengan _aligned_malloc atau _aligned_offset_malloc (hanya versi debug).

Sintaks

void * _aligned_offset_realloc_dbg(
   void *memblock,
   size_t size,
   size_t alignment,
   size_t offset,
   const char *filename,
   int linenumber
);

Parameter

memblock
Penunjuk blok memori saat ini.

size
Ukuran alokasi memori.

alignment
Nilai perataan, yang harus berupa kekuatan bilangan bulat 2.

offset
Offset ke dalam alokasi memori untuk memaksa perataan.

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

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

Nilai hasil

_aligned_offset_realloc_dbg mengembalikan penunjuk 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 yang dikembalikan menunjuk ke ruang penyimpanan yang cocok diselaraskan untuk penyimpanan semua jenis objek. Untuk mendapatkan pointer ke jenis selain void, gunakan jenis cast pada nilai yang dikembalikan.

Keterangan

_aligned_offset_realloc_dbg adalah versi debug dari _aligned_offset_realloc fungsi. Ketika _DEBUG tidak ditentukan, setiap panggilan ke _aligned_offset_realloc_dbg dikurangi menjadi panggilan ke _aligned_offset_realloc. Baik _aligned_offset_realloc dan _aligned_offset_realloc_dbg realokasi blok memori di tumpukan dasar, tetapi _aligned_offset_realloc_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.

Seperti _aligned_offset_malloc, _aligned_offset_realloc_dbg memungkinkan struktur diselaraskan pada offset dalam struktur.

_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 mungkin memindahkan blok memori asli ke lokasi yang berbeda dalam tumpukan, dan juga mengubah ukuran blok memori. Jika blok memori dipindahkan, konten blok asli akan ditimpa.

Fungsi ini diatur errno ke ENOMEM jika alokasi memori gagal atau jika ukuran yang diminta lebih besar dari _HEAP_MAXREQ. Untuk informasi selengkapnya tentang errno, lihat errno, , _sys_errlist_doserrno, dan _sys_nerr. Selain itu, _aligned_offset_realloc_dbg memvalidasi parameternya. Jika alignment bukan kekuatan 2 atau jika offset bukan nol dan lebih besar dari atau sama dengan size, 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_offset_realloc_dbg <crtdbg.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Pustaka

Debug versi pustaka run-time C saja.

Baca juga

Rutinitas debug