Sdílet prostřednictvím


MALLOC

Přidělí bloků paměti.

void *malloc(
   size_t size 
);

Parametry

  • size
    Počet bajtů k přidělení.

Vrácená hodnota

mallocNeplatný ukazatel vrátí přidělený prostor nebo NULL Pokud není k dispozici dostatek paměti.Než vrátit ukazatele typu void, použijte typ odevzdaných na vrácenou hodnotu.Místa odkazuje vrácená hodnota je zaručena vhodně zarovnání pro skladování jakýkoli typ objektu.Pokud je velikost 0, malloc přiděluje nulové délky položek haldy a vrátí platný ukazatel na tuto položku.Vždy zkontrolujte návrat z malloc, i když je malé množství požadované paměti.

Poznámky

malloc Funkce přiděluje blok paměti alespoň size bajtů.Blok může být větší než size bajtů z důvodu místa potřebného pro zarovnání a údržba informace.

mallocNastaví errno na ENOMEM selhání přidělení paměti nebo množství paměti požadované přesahuje _HEAP_MAXREQ.Informace o této a dalších chybové kódy, Kód chyby, _doserrno, _sys_errlist a _sys_nerr.

Spouštěcí kód používá malloc k přidělení úložiště pro _environ, envp, a argv proměnné.Následující funkce a jejich protějšky wide znak také volání malloc:

calloc

fscanf

_getw

setvbuf

Funkce _exec

fseek

_popen

Funkce _spawn

fgetc

fsetpos

printf

_strdup

_fgetchar

_fullpath

putc

systém

fgets

fwrite

putchar

_tempnam

fprintf

getc

_putenv

ungetc

fputc

GetChar

Vloží

vfprintf

_fputchar

_getcwd

_putw

vprintf

fputs

_getdcwd

scanf

 

fread

získá

_searchenv

 

Jazyce C++ _set_new_mode funkce nastaví nový režim obslužnou rutinu pro malloc.Nový režim zpracování označuje, zda při selhání, malloc k volání rutiny nové nastaveném _set_new_handler.Ve výchozím nastavení malloc nemůže volat nové rutiny při selhání přidělení paměti.Toto výchozí chování můžete změnit tak, aby, když malloc selhání přidělení paměti, malloc volání rutiny nové stejným způsobem, že new operátor nemá selže z téhož důvodu.Chcete-li přepsat výchozí nastavení volání

_set_new_mode(1)

brzy v programu nebo propojení s NEWMODE.OBJ (see Možnosti propojení).

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

mallocje označena __declspec(noalias) a __declspec(restrict), což znamená, že funkce je zaručena upravit globální proměnné, vrácený ukazatel není s aliasem.Další informace naleznete v noalias a omezit.

Požadavky

Rutina

Požadované záhlaví

malloc

<stdlib.h> a <malloc.h>

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

Knihovny

Všechny verze C Runtime knihovny.

Příklad

// crt_malloc.c
// This program allocates memory with
// malloc, then frees the memory with free.
 

#include <stdlib.h>   // For _MAX_PATH definition
#include <stdio.h>
#include <malloc.h>

int main( void )
{
   char *string;

   // Allocate space for a path name
   string = malloc( _MAX_PATH );

   // In a C++ file, explicitly cast malloc's return.  For example, 
   // string = (char *)malloc( _MAX_PATH );

   if( string == NULL )
      printf( "Insufficient memory available\n" );
   else
   {
      printf( "Memory space allocated for path name\n" );
      free( string );
      printf( "Memory freed\n" );
   }
}
  

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

realloc