Udostępnij za pośrednictwem


_msize_dbg

Oblicza rozmiar bloku pamięci w stercie (tylko wersja debugowania).

size_t _msize_dbg( 
   void *userData, 
   int blockType  
);

Parametry

  • userData
    Wskaźnik blok pamięci, dla której chcesz określić rozmiar.

  • blockType
    Typ bloku pamięci określony: _CLIENT_BLOCK lub _NORMAL_BLOCK.

Wartość zwracana

Po pomyślnym zakończeniu _msize_dbg zwraca rozmiar (w bajtach) pamięci określony blok; w przeciwnym razie zwraca wartość NULL.

Uwagi

_msize_dbgjest w wersji debugowej-msize funkcji.Gdy _DEBUG nie jest zdefiniowana, każde wywołanie _msize_dbg jest ograniczona do wywołania _msize.Obie _msize i _msize_dbg obliczania rozmiaru bloku pamięci w stercie podstawowej, ale _msize_dbg dodaje dwie funkcje debugowania: zawiera zwrócony rozmiar buforów po obu stronach użytkownika część blok pamięci, a dzięki temu obliczenia wielkości dla bloku określonego typu.

Aby uzyskać informacje na temat sposobu, w jaki bloki pamięci są przydzielane, inicjowane i zarządzane w wersji debugowania podstawowej sterty, zobacz Szczegóły dotyczące stosu debugowania CRT.Aby uzyskać informacji na temat typów bloku alokacji i sposobu ich używania, zobacz typów bloków na stercie debugowania.Aby uzyskać informacje dotyczące różnic między wywołaniem funkcji standardowych sterty i jej wersję programu debug w kompilacja do debugowania aplikacji, zobacz Wersja debugowania funkcji alokacji stosu.

Ta funkcja sprawdza poprawność swojego parametru.Jeśli memblock jest pusty wskaźnik, _msize wywołuje program obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli błąd jest obsługiwany, funkcja ustawia errno do EINVAL i zwraca wartość -1.

Wymagania

Procedura

Wymagany nagłówek

_msize_dbg

<crtdbg.h>

Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność we Wstępie.

Biblioteki

Debuguj wersje wyłącznie Bibliotek uruchomieniowych C.

Przykład

// 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 );
}

Dane wyjściowe

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

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.

Zobacz też

Informacje

Procedury debugowania

_malloc_dbg