Sdílet prostřednictvím


_expand_dbg

Změní velikost určeného bloku paměti haldy nebo smluvní blok (pouze ladicí verze).

void *_expand_dbg( 
   void *userData,
   size_t newSize,
   int blockType,
   const char *filename,
   int linenumber 
);

Parametry

  • userData
    Ukazatel na bloku dříve přidělené paměti.

  • newSize
    Požadovaná velikost bloku (v bajtech).

  • blockType
    Požadován typ změněnou velikostí bloku: _CLIENT_BLOCK nebo _NORMAL_BLOCK.

  • filename
    Ukazatel myši na název zdrojového souboru, která požadovala rozbalte operace nebo NULL.

  • linenumber
    Číslo zdrojového souboru, kde byla požadována operace rozbalení nebo NULL.

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

Vrácená hodnota

Po úspěšném ukončení _expand_dbg vrací ukazatel na blok změněnou velikostí paměti.Protože paměť není přesunut, adresa je stejná jako userData.Pokud došlo k chybě nebo bloku nelze rozbalit na požadovanou velikost, vrátí NULL.Pokud dojde k selhání, errno s informace z operačního systému o povaze selhání.Pro více informací o errno si prohlédněte Kód chyby, _doserrno, _sys_errlist a _sys_nerr.

Poznámky

_expand_dbg Je funkce ladicí verzi _rozbalte funkce.Při _DEBUG není definována, každé volání _expand_dbg na volání _expand.I _expand a _expand_dbg velikost bloku paměti haldy základní, ale _expand_dbg vejde několik funkce ladění: vyrovnávacích pamětí na obou stranách uživatele část bloku test těsnosti parametr typu blok sledování přidělení zvláštních typů a filename/linenumber informace k určení původu žádosti o přidělení.

_expand_dbgZmění velikost bloku paměti určené s mírně více místa než požadovaný newSize.newSizemůže být větší nebo menší než velikost bloku původně přidělené paměti.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.Rozbalení nebo smluvní původní blok paměti lze provést změnu velikosti._expand_dbgpřesunout blok paměti, stejně jako _realloc_dbg funkce.

Při newSize je větší než původní blok rozbalený velikost bloku paměti.Při rozšíření, je-li blok paměti nelze rozbalit tak, aby odpovídala požadované velikosti NULL je vrácena.Při newSize je menší než původní blok velikost bloku paměti je smluvně dokud novou velikost.

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 typech bloku přidělení a jejich použití naleznete v tématu Typy bloky na ladění haldy.Informace o rozdílech mezi volání haldy standardní funkce a její verzi ladění v ladicí verzi aplikace naleznete v tématu pomocí ladění verze Versus the Base verze.

Tato funkce ověřuje jeho parametry.Pokud memblock je nulový ukazatel nebo pokud je větší než velikost _HEAP_MAXREQ, tato funkce spustí obslužnou rutinu neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno spuštění pokračovat, errno je nastavena na EINVAL a vrátí funkce NULL.

Požadavky

Rutina

Požadované záhlaví

_expand_dbg

<crtdbg.h>

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

Knihovny

Ladění verze C Runtime knihovny pouze.

Příklad

// crt_expand_dbg.c
//
// 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 _expand_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;
   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 );

   // Expand the buffer using _expand_dbg and show the new size
   buffer = (long *)_expand_dbg( buffer, size + sizeof(long),
                                 _NORMAL_BLOCK, __FILE__, __LINE__ );

   if( buffer == NULL )
      exit( 1 );
   size = _msize_dbg( buffer, _NORMAL_BLOCK );
   printf( "Size of block after _expand_dbg of 1 more long: %u\n",
           size );

   free( buffer );
   exit( 0 );
}
  

Comment (Komentář)

Výstup programu závisí na schopnosti vašeho počítače rozbalit všechny oddíly.Pokud jsou rozbaleny všechny oddíly, výstup se odrazí v sekci Výstup.

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

_malloc_dbg