Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Berekent de grootte van een blok geheugen in de heap (alleen foutopsporingsversie).
Syntaxis
size_t _msize_dbg(
void *userData,
int blockType
);
Parameterwaarden
userData
Wijs het geheugenblok aan waarvoor de grootte moet worden bepaald.
blockType
Type van het opgegeven geheugenblok: _CLIENT_BLOCK of _NORMAL_BLOCK.
Retourwaarde
Als het opgegeven geheugenblok is voltooid, _msize_dbg wordt de grootte (in bytes) van het opgegeven geheugenblok geretourneerd. Anders wordt het geretourneerd NULL.
Opmerkingen
_msize_dbg is een foutopsporingsversie van de _msize functie. Wanneer _DEBUG niet is gedefinieerd, wordt elke aanroep _msize_dbg beperkt tot een aanroep naar _msize. Beide _msize en _msize_dbg berekenen de grootte van een geheugenblok in de basis-heap, maar _msize_dbg er worden twee foutopsporingsfuncties toegevoegd: het bevat de buffers aan beide zijden van het geheugenblok in de geretourneerde grootte en maakt berekeningen van grootten voor specifieke bloktypen mogelijk.
Zie CRT-foutopsporingsdetails voor informatie over hoe geheugenblokken worden toegewezen, geïnitialiseerd en beheerd in de foutopsporingsversie van de basis-heap. Zie Typen blokken in de heap voor foutopsporing voor informatie over de typen toewijzingsblokken en hoe ze worden gebruikt. Zie Foutopsporingsversies van heap-functies voor informatie over de verschillen tussen standaard-heap-functies en de foutopsporingsversies.
Met deze functie wordt de parameter gevalideerd. Als memblock dit een null-aanwijzer is, roept u een ongeldige parameterhandler aan _msize_dbg , zoals beschreven in parametervalidatie. Als de fout wordt verwerkt, wordt de functie ingesteld errnoEINVAL op en geretourneerd -1 (18.446.744.073.709.551.615 niet-ondertekend).
Requirements
| Routine | Vereiste header |
|---|---|
_msize_dbg |
<crtdbg.h> |
Zie Compatibiliteit voor meer compatibiliteitsinformatie.
Libraries
Fouten opsporen in versies van C-runtimebibliotheken alleen.
Example
// 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 );
}
Uitvoer
Size of block after _malloc_dbg of 40 longs: 160
Size of block after _realloc_dbg of 40 more longs: 320