Udostępnij przez


_msize_dbg

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

Składnia

size_t _msize_dbg(
   void *userData,
   int blockType
);

Parametry

userData
Wskaźnik do bloku pamięci, dla którego należy określić rozmiar.

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

Wartość zwracana

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

Uwagi

_msize_dbg jest wersją debugowania funkcji _msize . Jeśli _DEBUG nie jest zdefiniowane, każde wywołanie metody _msize_dbg jest zmniejszane do wywołania metody _msize. Zarówno _msize , jak i _msize_dbg oblicz rozmiar bloku pamięci w stercie podstawowej, ale _msize_dbg dodaje dwie funkcje debugowania: zawiera bufory po obu stronach bloku pamięci w zwróconym rozmiarze i umożliwia obliczenia rozmiaru dla określonych typów bloków.

Aby uzyskać informacje na temat przydzielania, inicjowania i zarządzania blokami pamięci w wersji debugowania sterty podstawowej, zobacz szczegóły sterty debugowania CRT. Aby uzyskać informacje o typach bloków alokacji i sposobie ich użycia, zobacz Typy bloków na stercie debugowania. Aby uzyskać informacje o różnicach między standardowymi funkcjami sterty i wersjami debugowania, zobacz Debugowanie wersji funkcji alokacji sterty.

Ta funkcja weryfikuje jego parametr. Jeśli memblock jest wskaźnikiem o wartości null, _msize_dbg wywołuje nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli błąd jest obsługiwany, funkcja ustawia errnoEINVAL wartość i zwraca wartość -1.

Wymagania

Procedura Wymagany nagłówek
_msize_dbg <Crtdbg.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Biblioteki

Debugowanie tylko wersji bibliotek czasu wykonywania języka 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 );
}

Wynik

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

Zobacz też

Procedury debugowania
_malloc_dbg