_msize_dbg
Oblicza rozmiar bloku pamięci w stercie (tylko wersja debugowania).
size_t _msize_dbg(
void *userData,
int blockType
);
Parametry
userData
Wskaźnik do bloku pamięci, dla których należy określić rozmiar.blockType
Blok pamięci określony typ: _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 zredukowana do wywołania _msize.Obie _msize i _msize_dbg obliczania rozmiaru bloku pamięci w stercie bazowy, ale _msize_dbg dodaje dwie funkcje debugowania: zawiera zwrócony rozmiar buforów po obu stronach część użytkownikowi bloku pamięci, a dzięki temu obliczenia wielkości dla typów określonego bloku.
Informacje o jak bloków pamięci są przydzielane, zainicjowany i zarządzane w wersji debugowej bazowy sterty, zobacz Zarządzanie pamięcią i debugowania sterty.Informacje o alokacji typów bloku i w jaki sposób są używane, zobacz Typów bloków na stercie debugowania.Aby uzyskać informacje dotyczące różnic między wywołaniem funkcji standardowego sterty i jej wersję debugowania w trybie debugowania aplikacji, zobacz przy użyciu wersji Versus the Base wersja do debugowania.
Funkcja ta sprawdza poprawność jej parametr.Jeśli memblock jest wskaźnik zerowy, _msize wywołuje funkcję obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli błąd jest obsługiwany, funkcja ustawia errno do EINVAL i zwraca wartość -1.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_msize_dbg |
<crtdbg.h> |
Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.
Biblioteki
Debug wersje biblioteki uruchomieniowej c tylko.
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ć standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.