Sdílet prostřednictvím


_expand

Změní velikost bloku paměti.

void *_expand( 
   void *memblock,
   size_t size 
);

Parametry

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

  • size
    Nová velikost v bajtech.

Vrácená hodnota

_expandNeplatný ukazatel vrátí do bloku paměti reallocated._expand, na rozdíl od realloc, nelze přesunout, změnit jeho velikost bloku.Tedy, pokud je dostatečné paměti bez přesunutí, rozbalte bloku memblock parametr _expand je stejný jako návratová hodnota.

_expandVrátí NULL při zjištěna chyba během jeho činnosti.Například pokud _expand je pro zmenšení blok paměti, ji může zjistit poškození haldy malý blok nebo bloku neplatný ukazatel a vrátit NULL.

Pokud je nedostatek paměti bloku rozbalit do dané velikosti bez jeho přesunutí, vrátí funkce NULL._expandnikdy Vrátí rozbalený menší než požadovaná velikost bloku.Pokud dojde k selhání, errno označuje povahu poruchy.Pro více informací o errno si prohlédněte Kód chyby, _doserrno, _sys_errlist a _sys_nerr.

Vrácená hodnota odkazuje na úložný prostor, který je zaručeně vhodně zarovnání pro skladování jakýkoli typ objektu.Chcete-li zkontrolovat novou velikost položky, _msize.Získání ukazatele typu než void, použijte typ odevzdaných na vrácenou hodnotu.

Poznámky

_expand Funkce změní velikost bloku dříve přidělené paměti při pokusech rozbalit nebo sbalit blok bez přesunutí jeho umístění v haldě.memblock Parametr odkazuje na začátku bloku.size Parametr poskytuje novou velikost bloku, v bajtech.Obsah bloku se nemění až kratší velikosti nové a staré.memblocknelze blokovat, které bylo uvolněno.

[!POZNÁMKA]

Na 64bitových platformách _expand pravděpodobně není smlouvy bloku, je-li nová velikost menší než aktuální velikost; zejména pokud byla menší než 16 kB blok a proto přidělené haldy pro nízkou fragmentaci _expand opustí bloku beze změny a vrátí memblock.

Aplikace propojen s ladicí verzi c knihoven run-time _expand převede na _expand_dbg.Další informace o způsobu je během ladění procesu správy haldy, viz The CRT ladění haldy.

Tato funkce ověřuje jeho parametry.Pokud memblock je nulový ukazatel 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.Pokud size je větší než _HEAP_MAXREQ, errno je nastavena na ENOMEM a vrátí funkce NULL.

Požadavky

Function

Požadované záhlaví

_expand

<malloc.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

Příklad

// crt_expand.c

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

int main( void )
{
   char *bufchar;
   printf( "Allocate a 512 element buffer\n" );
   if( (bufchar = (char *)calloc( 512, sizeof( char ) )) == NULL )
      exit( 1 );
   printf( "Allocated %d bytes at %Fp\n", 
         _msize( bufchar ), (void *)bufchar );
   if( (bufchar = (char *)_expand( bufchar, 1024 )) == NULL )
      printf( "Can't expand" );
   else
      printf( "Expanded block to %d bytes at %Fp\n", 
            _msize( bufchar ), (void *)bufchar );
   // Free memory 
   free( bufchar );
   exit( 0 );
}
  

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

Přidělení paměti

calloc

free

MALLOC

_msize

realloc