_msize_dbg

Yığındaki bir bellek bloğunun boyutunu hesaplar (yalnızca hata ayıklama sürümü).

Sözdizimi

size_t _msize_dbg(
   void *userData,
   int blockType
);

Parametreler

userData
Boyutunun belirleneceği bellek bloğuna yönelik işaretçi.

blockType
Belirtilen bellek bloğunun türü: _CLIENT_BLOCK veya _NORMAL_BLOCK.

Dönüş değeri

Başarıyla tamamlandığında, _msize_dbg belirtilen bellek bloğunun boyutunu (bayt cinsinden) döndürür; aksi takdirde döndürür NULL.

Açıklamalar

_msize_dbg , _msize işlevinin hata ayıklama sürümüdür. Tanımlanmadığında _DEBUG , çağrısının her _msize_dbg biri öğesine yapılan çağrıya _msizeindirgenir. Hem hem _msize_dbg de _msize temel yığındaki bir bellek bloğunun boyutunu hesaplayın, ancak _msize_dbg iki hata ayıklama özelliği ekler: Döndürülen boyutta bellek bloğunun kullanıcı bölümünün her iki tarafındaki arabellekleri içerir ve belirli blok türleri için boyut hesaplamalarına izin verir.

Temel yığının hata ayıklama sürümünde bellek bloklarının nasıl ayrıldığı, başlatıldığı ve yönetildiğini öğrenmek için bkz . CRT hata ayıklama yığını ayrıntıları. Ayırma bloğu türleri ve bunların nasıl kullanıldığı hakkında bilgi için bkz . Hata ayıklama yığınındaki blok türleri. Standart yığın işlevleri ile hata ayıklama sürümleri arasındaki farklar hakkında bilgi için bkz . Yığın ayırma işlevlerinin sürümlerinde hata ayıklama.

Bu işlev parametresini doğrular. Null işaretçiysememblock, _msize_dbg Parametre doğrulama bölümünde açıklandığı gibi geçersiz bir parametre işleyicisi çağırır. Hata işlenirse işlev olarak ayarlanır errno EINVAL ve -1 döndürür (18.446.744.073.709.551.615 işaretsiz).

Gereksinimler

Yordam Gerekli başlık
_msize_dbg <crtdbg.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Kitaplıklar

Yalnızca C çalışma zamanı kitaplıklarının sürümlerinde hata ayıklama.

Örnek

// crt_msize_dbg.c
// compile with: /MTd
/*
* This program allocates a block of memory using _malloc_dbg
* and then calls _msize_dbg to display the size of that block.
* Next, it uses _realloc_dbg to expand the amount of
* memory used by the buffer and then calls _msize_dbg again to
* display the new amount of memory allocated to the buffer.
*/

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <crtdbg.h>

int main( void )
{
        long *buffer, *newbuffer;
        size_t size;

        /*
         * Call _malloc_dbg to include the filename and line number
         * of our allocation request in the header
         */
        buffer = (long *)_malloc_dbg( 40 * sizeof(long), _NORMAL_BLOCK, __FILE__, __LINE__ );
        if( buffer == NULL )
               exit( 1 );

        /*
         * Get the size of the buffer by calling _msize_dbg
         */
        size = _msize_dbg( buffer, _NORMAL_BLOCK );
        printf( "Size of block after _malloc_dbg of 40 longs: %u\n", size );

        /*
         * Reallocate the buffer using _realloc_dbg and show the new size
         */
        newbuffer = _realloc_dbg( buffer, size + (40 * sizeof(long)), _NORMAL_BLOCK, __FILE__, __LINE__ );
        if( newbuffer == NULL )
               exit( 1 );
        buffer = newbuffer;
        size = _msize_dbg( buffer, _NORMAL_BLOCK );
        printf( "Size of block after _realloc_dbg of 40 more longs: %u\n", size );

        free( buffer );
        exit( 0 );
}

Çıktı

Size of block after _malloc_dbg of 40 longs: 160
Size of block after _realloc_dbg of 40 more longs: 320

Ayrıca bkz.

Hata ayıklama yordamları
_malloc_dbg