Sdílet prostřednictvím


_calloc_dbg

Přidělí počet bloků paměti haldy s dalším prostorem pro ladění záhlaví a přepsat vyrovnávací paměti (pouze ladicí verze).

void *_calloc_dbg( 
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber 
);

Parametry

  • num
    Požadovaný počet bloků paměti.

  • size
    Požadovaná velikost každého bloku paměti (bajty).

  • blockType
    Typ bloku paměti požadované: _CLIENT_BLOCK nebo _NORMAL_BLOCK.

    Informace o typech bloku přidělení a jejich použití naleznete v tématu Typy bloky na ladění haldy.

  • filename
    Ukazatel myši na název zdrojového souboru, která požaduje přidělení operace nebo NULL.

  • linenumber
    Číslo zdrojového souboru, kde byla požadována operace přidělení nebo NULL.

filename a linenumber parametry jsou k dispozici pouze při _calloc_dbg byl volán explicitně nebo _CRTDBG_MAP_ALLOC byla definována konstanta preprocesoru.

Vrácená hodnota

Úspěšné dokončení této funkce vrací ukazatel na část poslední blok paměti přidělené uživatelským, volá funkci nového zpracování nebo vrátí NULL.Úplný popis vrácení chování naleznete v části poznámky.Další informace o použití nové funkci zpracování naleznete calloc funkce.

Poznámky

_calloc_dbgladicí verzi je calloc funkce.Při _DEBUG není definována, každé volání _calloc_dbg na volání calloc.I calloc a _calloc_dbg přidělit num blokuje paměti haldy základní, ale _calloc_dbg nabízí několik funkce ladění:

  • Vyrovnávací paměti na obou stranách uživatele část bloku test netěsnosti.

  • Parametr typu blok sledování přidělení zvláštních typů.

  • filename/linenumber informace k určení původu žádosti o přidělení.

_calloc_dbgKaždý blok paměti s mírně více místa než požadovaný přiděluje size.Další místo používá správce hald ladění bloků paměti ladění propojení a k aplikaci s ladicími informacemi hlavičky a přepsat vyrovnávací paměti.Při přidělení bloku uživatele část bloku je vyplněno hodnotou, 0xCD, a každý přepsat vyrovnávací paměti jsou vyplněny 0xFD.

_calloc_dbgNastaví errno na ENOMEM Pokud dojde k selhání přidělení paměti; EINVALbude vrácena, pokud překročí množství paměti potřebné (včetně režie uvedenou dříve) _HEAP_MAXREQ.Informace o této a dalších chybové kódy, Kód chyby, _doserrno, _sys_errlist a _sys_nerr.

Informace o jak jsou bloky paměti přidělené, inicializován a spravuje v ladicí verzi základní haldy Správa paměti a ladění haldy.Informace o rozdílech mezi voláním funkce standardní haldy oproti verzi své ladění v ladicí verzi aplikace naleznete v tématu pomocí ladění verze Versus the Base verze.

Požadavky

Rutina

Požadované záhlaví

_calloc_dbg

<crtdbg.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

Příklad

// crt_callocd.c
/*
 * This program uses _calloc_dbg to allocate space for
 * 40 long integers. It initializes each element to zero.
 */
#include <stdio.h>
#include <malloc.h>
#include <crtdbg.h>

int main( void )
{
        long *bufferN, *bufferC;

        /* 
         * Call _calloc_dbg to include the filename and line number
         * of our allocation request in the header and also so we can
         * allocate CLIENT type blocks specifically
         */
        bufferN = (long *)_calloc_dbg( 40, sizeof(long), _NORMAL_BLOCK, __FILE__, __LINE__ );
        bufferC = (long *)_calloc_dbg( 40, sizeof(long), _CLIENT_BLOCK, __FILE__, __LINE__ );
        if( bufferN != NULL && bufferC != NULL )
              printf( "Allocated memory successfully\n" );
        else
              printf( "Problem allocating memory\n" );

        /* 
         * _free_dbg must be called to free CLIENT type blocks
         */
        free( bufferN );
        _free_dbg( bufferC, _CLIENT_BLOCK );
}
  

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Ladění rutin

calloc

_malloc_dbg

_DEBUG