_msize_dbg

(Yalnızca hata ayıklama sürümü) yığın bellek bloğu boyutu hesaplar.

size_t _msize_dbg( 
   void *userData, 
   int blockType  
);

Parametreler

  • userData
    Bellek bloğu boyutunu belirlemek üzere işaretçi.

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

Dönüş Değeri

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

Notlar

_msize_dbgbir hata ayıklama sürümü _Mboyut işlev.Zaman _DEBUG tanımlı değilse, her arama _msize_dbg bir çağrı için sınırlı _msize.Her ikisi de _msize ve _msize_dbg temel yığınındaki bellek bloğu boyutunu hesaplamak, ancak _msize_dbg iki hata ayıklama özellikleri ekler: dönen boyutu arabellekleri bellek bloğu kullanıcı bölümünü her iki tarafındaki içerir ve boyutu hesaplamalar için belirli blok türlerine izin verir.

Bellek bloklarının taban yığının hata ayıklama sürümünde nasıl ayrıldığı, başlatıldığı ve yönetildiği hakkında bilgi için, bkz. CRT Hata Ayıklama Öbeği Ayrıntıları.Ayırma blok türleri ve nasıl kullanılacakları hakkında daha fazla bilgi için bkz: hata ayıklama öbek üzerindeki blokları türleri.Bir uygulamanın hata ayıklama yapı içinde bir standart yığın işlevi ve hata ayıklama sürümünü çağırmak arasındaki farklar hakkında daha fazla bilgi için bkz: Öbek Atama İşlevleri Hata Ayıklama Sürümleri.

Bu işlev, parametresini doğrular.Yoksa memblock bir null işaretçi _msize açıklandığı bir geçersiz parametre işleyicisini çağırır Parametre Doğrulama.İşlev hata işlenir, ayarlar errno için EINVAL ve -1 değerini döndürür.

Gereksinimler

Yordam

Gerekli başlık

_msize_dbg

<crtdbg.h>

Daha fazla uyumluluk bilgisi için Giriş altındaki Uyumluluk bölümüne bakın.

Kitaplıklar

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

Ö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

.NET Framework Eşdeğeri

Uygulanamaz. Standart C işlevini çağırmak için PInvoke kullanın. Daha fazla bilgi için bkz. Platform Çağırma Örnekleri.

Ayrıca bkz.

Başvuru

Hata Ayıklama Yordamları

_malloc_dbg