Versi debug fungsi alokasi timbunan

Pustaka runtime C (CRT) berisi versi Debug khusus dari fungsi alokasi timbunan. Fungsi-fungsi ini memiliki nama yang sama dengan versi Rilis dengan _dbg ditambahkan ke versi tersebut. Artikel ini menjelaskan perbedaan antara versi Rilis fungsi CRT dan _dbg versi, menggunakan malloc dan _malloc_dbg sebagai contoh.

Perilaku dalam build debug

Ketika _DEBUG ditentukan, CRT memetakan semua malloc panggilan ke _malloc_dbg. Oleh karena itu, Anda tidak perlu menulis ulang kode Anda menggunakan _malloc_dbg alih-alih malloc menerima manfaat saat penelusuran kesalahan.

Namun, Anda mungkin ingin memanggil _malloc_dbg secara eksplisit. _malloc_dbg Panggilan secara eksplisit memiliki beberapa manfaat tambahan:

  • _CLIENT_BLOCK Lacak alokasi jenis.

  • Menyimpan file sumber dan nomor baris tempat permintaan alokasi terjadi.

Jika Anda tidak ingin mengonversi panggilan Anda malloc ke , Anda dapat memperoleh informasi file sumber dengan menentukan _CRTDBG_MAP_ALLOC, yang menyebabkan prapemroseol langsung memetakan semua panggilan ke malloc_malloc_dbg alih-alih mengandalkan pembungkus di sekitar malloc_malloc_dbg.

Untuk melacak jenis alokasi terpisah di blok klien, Anda harus memanggil _malloc_dbg secara langsung dan mengatur blockType parameter ke _CLIENT_BLOCK.

Perilaku dalam build non-debug

Ketika _DEBUG tidak ditentukan, panggilan ke malloc tidak terganggu, panggilan ke _malloc_dbg diselesaikan ke malloc, definisi _CRTDBG_MAP_ALLOC diabaikan, dan informasi file sumber yang berkaitan dengan permintaan alokasi tidak disediakan. Karena malloc tidak memiliki parameter jenis blok, permintaan untuk _CLIENT_BLOCK jenis diperlakukan sebagai alokasi standar.

Baca juga

Teknik penelusuran kesalahan CRT