malloc

Alloca i blocchi di memoria.

void *malloc(
   size_t size 
);

Parametri

  • size
    Byte da allocare.

Valore restituito

malloc restituisce un puntatore a void allo spazio allocato o a NULL se la memoria disponibile non è sufficiente.Per ritornare un puntatore a un tipo diverso da void, utilizzare un cast di tipo sul valore di ritorno.Lo spazio di memoria puntato da un valore di ritorno garantisce l'archiviazione di ogni tipo di oggetto.Se la dimensione è 0, malloc alloca un elemento di lunghezza zero nell'heap e restituisce un puntatore valido per l'elemento.Verificare sempre il ritorno da malloc, anche se la quantità di memoria richiesta è poca.

Note

La funzione malloc alloca un blocco di memoria almeno di size byte.Il blocco può essere maggiore di size byte a causa dello spazio richiesto per le informazioni di manutenzione e di allineamento.

malloc imposta errno a ENOMEM se un'allocazione della memoria fallisce o se la quantità di memoria richiesta supera _HEAP_MAXREQ.Per informazioni su questi e altri codici di errore, vedere errno, _doserrno, _sys_errlist e _sys_nerr.

Il codice di avvio utilizza malloc per allocare la memoria per le variabili _environ, envpe argv.Le seguenti funzioni e anche le relative controparti a caratteri estesi chiamano malloc:

calloc

fscanf

_getw

setvbuf

funzioni di _exec

fseek

_popen

funzioni di _spawn

fgetc

fsetpos

printf

_strdup

_fgetchar

_fullpath

putc

sistema

fgets

fwrite

putchar

_tempnam

fprintf

getc

_putenv

ungetc

fputc

getchar

puts

vfprintf

_fputchar

_getcwd

_putw

vprintf

fputs

_getdcwd

scanf

 

fread

ottiene

_searchenv

 

La funzione C++ _set_new_mode imposta la nuova modalità di gestione per malloc.La nuova modalità del gestore indica che, in caso di errore, malloc deve richiamare la nuova routine del gestore come imposto da _set_new_handler.Per impostazione predefinita, malloc non richiama la nuova routine di gestione in caso di errore nell'allocare memoria.È possibile eseguire l'override di questo comportamento predefinito in modo che, quando malloc non riesce ad allocare memoria, malloc richiami la nuova routine del gestore allo stesso modo di come accade con l'operatore new quando si verifica il medesimo errore.Per eseguire l'override del comportamento predefinito, chiamare

_set_new_mode(1)

all'inizio del programma, o collegare con NEWMODE.OBJ (vedere Opzioni di collegamento).

Quando l'applicazione viene collegata a una versione di debug delle librerie di runtime del linguaggio C, malloc viene identificato come _malloc_dbg.Per ulteriori informazioni su come viene gestito l'heap durante il processo di debug, vedere L'heap di debug CRT.

malloc è contrassegnata in __declspec(noalias) e __declspec(restrict), pertanto la funzione garantisce che le variabili globali non vengono modificate, e che il puntatore restituito è già utilizzato.Per ulteriori informazioni, vedere noalias e limiti.

Requisiti

Routine

Intestazione obbligatoria

malloc

<stdlib.h> e <malloc.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Librerie

Tutte le versioni delle Librerie di runtime C.

Esempio

// 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" );
   }
}
  

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Allocazione di memoria

calloc

free

realloc