Delen via


_msize_dbg

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

Zie ook

Fouten opsporen in routines
_malloc_dbg