_msize_dbg

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Calcule la taille d’un bloc de mémoire dans le tas (version debug uniquement).

  
      size_t _msize_dbg(  
   void *userData,  
   int blockType   
);  

Paramètres

userData
Pointeur vers le bloc de mémoire pour laquelle déterminer la taille.

blockType
Type du bloc de mémoire spécifié : _CLIENT_BLOCK ou _NORMAL_BLOCK.

Opération réussie, _msize_dbg retourne la taille (en octets) du bloc de mémoire spécifié ; sinon, elle renvoie la valeur NULL.

_msize_dbgest une version de débogage du-msize (fonction). Lors de la _DEBUG n’est pas défini, chaque appel à _msize_dbg est réduit à un appel à _msize. Les deux _msize et _msize_dbg calculer la taille d’un bloc de mémoire dans le tas de base, mais _msize_dbg ajoute deux fonctionnalités de débogage : il inclut les mémoires tampons de chaque côté de la partie utilisateur du bloc de mémoire dans la taille retournée et il autorise les calculs de taille pour les types de bloc spécifique.

Pour plus d’informations sur la façon dont les blocs de mémoire sont alloués, initialisés et gérés dans la version de débogage du tas de base, voir CRT Debug Heap Details. Pour plus d’informations sur les types de blocs d’allocation et comment elles sont utilisées, consultez Types de bloc sur le tas de débogage. Pour plus d’informations sur les différences entre appeler une fonction de tas standard et sa version de débogage dans une version debug d’une application, consultez Versions Debug des tas d’Allocation fonctions.

Cette fonction valide son paramètre. Si memblock est un pointeur null, _msize appelle un gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. Si l’erreur est gérée, la fonction définit errno à EINVAL et retourne -1.

RoutineEn-tête requis
_msize_dbg<crtdbg.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility dans l’introduction.

Les versions Debug de les bibliothèques Runtime C uniquement.

// 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 );  
}  

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

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Routines de débogage
_malloc_dbg

Afficher: