_msize_dbg
Calcola le dimensioni di un blocco di memoria nell'heap (versione di debug solo).
size_t _msize_dbg(
void *userData,
int blockType
);
Parametri
userData
Puntatore al blocco di memoria per il quale determinare la dimensione.a blocchi
Tipo di blocco di memoria specificato: _CLIENT_BLOCK o _NORMAL_BLOCK.
Valore restituito
Al termine, _msize_dbg restituisce le dimensioni in byte) del blocco di memoria specificato; in caso contrario restituisce NULL.
Note
_msize_dbg è una versione di debug _msize funzione.quando _DEBUG non è definita, ogni chiamata a _msize_dbg è stato ridotto a una chiamata a _msize.entrambi _msize e _msize_dbg calcolare la dimensione di un blocco di memoria nell'heap di base, ma _msize_dbg aggiunge due funzionalità di debug: Include i buffer presenti da entrambi i lati della parte del blocco di memoria nella dimensione restituita e consente di eseguire calcoli di dimensioni per i tipi di blocco specifici.
Per informazioni su come i blocchi di memoria vengono allocati, inizializzati e vengono gestiti nella versione di debug dell'heap di base, vedere Gestione della memoria e heap di debug.Per informazioni sui tipi di blocchi di allocazione e come vengono utilizzati, vedere Tipi di blocchi sull'heap di debug.Per informazioni sulle differenze tra chiamare una funzione standard dell'heap e la relativa versione di debug in una build di debug di un'applicazione, vedere Utilizzando la versione di debug nella versione di base.
Questa funzione convalida il parametro.se memblock è un puntatore null, _msize viene richiamato un gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'errore viene gestito, set di funzione errno in EINVAL e restituisce -1.
Requisiti
routine |
Intestazione di associazione |
---|---|
_msize_dbg |
<crtdbg.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Librerie
versioni di debug di Librerie di runtime del linguaggio C solo.
Esempio
// 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 );
}
Output
Size of block after _malloc_dbg of 40 longs: 160
Size of block after _realloc_dbg of 40 more longs: 320
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.