_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.