mallocmalloc

Przydziela bloki pamięci.Allocates memory blocks.

SkładniaSyntax

void *malloc(
   size_t size
);

ParametryParameters

zmieniasize
Bajty do przydzielenia.Bytes to allocate.

Wartość zwracanaReturn Value

Funkcja malloc zwraca wskaźnik void do przydzieloną miejsce lub wartość null , jeśli jest za mało dostępnej pamięci.malloc returns a void pointer to the allocated space, or NULL if there is insufficient memory available. Aby zwrócić wskaźnik do typu innego niż void , należy użyć rzutowania typu dla zwracanej wartości.To return a pointer to a type other than void, use a type cast on the return value. Miejsce do magazynowania wskazywane przez wartość zwracaną jest gwarantowane odpowiednio wyrównane do przechowywania dowolnego typu obiektu, który ma wymaganie wyrównania mniejsze niż lub równe podstawowemu wyrównaniu.The storage space pointed to by the return value is guaranteed to be suitably aligned for storage of any type of object that has an alignment requirement less than or equal to that of the fundamental alignment. (W Visual C++ podstawowe wyrównanie jest wyrównaniem, które jest wymagane dla double lub 8 bajtów.(In Visual C++, the fundamental alignment is the alignment that's required for a double, or 8 bytes. W kodzie, który jest przeznaczony dla platform 64-bitowych, wynosi 16 bajtów. Użyj _aligned_malloc , aby przydzielić magazyn dla obiektów, które mają większe wymagania dotyczące wyrównania — na przykład typy SSE __m128 i i __m256 typy, które są zadeklarowane za pomocą __declspec(align( n )) gdzie n jest większy niż 8.In code that targets 64-bit platforms, it’s 16 bytes.) Use _aligned_malloc to allocate storage for objects that have a larger alignment requirement—for example, the SSE types __m128 and __m256, and types that are declared by using __declspec(align( n )) where n is greater than 8. Jeśli rozmiar wynosi 0, malloc przypisuje element o zerowej długości w stercie i zwraca prawidłowy wskaźnik do tego elementu.If size is 0, malloc allocates a zero-length item in the heap and returns a valid pointer to that item. Zawsze sprawdzaj poprawność funkcji malloc, nawet jeśli żądana ilość pamięci jest mała.Always check the return from malloc, even if the amount of memory requested is small.

UwagiRemarks

Funkcja malloc przypisuje blok pamięci o rozmiarze co najmniej bajtów.The malloc function allocates a memory block of at least size bytes. Blok może być większy niż rozmiar bajtów ze względu na miejsce, które jest wymagane do wyrównania i konserwacji.The block may be larger than size bytes because of the space that's required for alignment and maintenance information.

Funkcja malloc ustawia errno do ENOMEM , jeśli alokacja pamięci nie powiedzie się lub jeśli żądana ilość pamięci przekroczy _HEAP_MAXREQ.malloc sets errno to ENOMEM if a memory allocation fails or if the amount of memory requested exceeds _HEAP_MAXREQ. Aby uzyskać informacje o tym i innych kodach błędów, zobacz errno, _doserrno, _sys_errlist i _sys_nerr.For information about this and other error codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Kod uruchamiania używa usługi malloc do przydzielania pamięci dla zmiennych _environ, envp i argv .The startup code uses malloc to allocate storage for the _environ, envp, and argv variables. Następujące funkcje i ich odpowiedniki znakowe są również wywołaniem malloc.The following functions and their wide-character counterparts also call malloc.

Funkcja C++ _set_new_mode ustawia nowy tryb obsługi dla opcji malloc.The C++ _set_new_mode function sets the new handler mode for malloc. Nowy tryb obsługi wskazuje, czy w przypadku niepowodzenia, malloc ma wywołać nową procedurę obsługi jako ustawioną przez _set_new_handler.The new handler mode indicates whether, on failure, malloc is to call the new handler routine as set by _set_new_handler. Domyślnie funkcja malloc nie wywołuje nowej procedury obsługi w przypadku niepowodzenia przydzielenia pamięci.By default, malloc does not call the new handler routine on failure to allocate memory. Można zastąpić to zachowanie domyślne, tak aby w przypadku niepowodzenia przydzielenia pamięci przez funkcję malloc wywołuje nową procedurę obsługi w taki sam sposób, w jaki new operator wykonuje, gdy nie powiedzie się z tego samego powodu.You can override this default behavior so that, when malloc fails to allocate memory, malloc calls the new handler routine in the same way that the new operator does when it fails for the same reason. Aby zastąpić wartość domyślną, wywołaj _set_new_mode(1) wczesne w programie lub Połącz z NEWMODE. OBJ (zobacz Opcje linku).To override the default, call _set_new_mode(1) early in your program, or link with NEWMODE.OBJ (see Link Options).

Gdy aplikacja jest połączona z wersją debugową bibliotek uruchomieniowych C, funkcja malloc rozwiązuje _malloc_dbg.When the application is linked with a debug version of the C run-time libraries, malloc resolves to _malloc_dbg. Aby uzyskać więcej informacji na temat sposobu zarządzania stertą w procesie debugowania, zobacz szczegóły sterty debugowania CRT.For more information about how the heap is managed during the debugging process, see CRT Debug Heap Details.

wartość malloc jest oznaczona __declspec(noalias) i __declspec(restrict) ; oznacza to, że funkcja jest gwarantowana, aby nie modyfikować zmiennych globalnych i że zwrócony wskaźnik nie jest aliasem.malloc is marked __declspec(noalias) and __declspec(restrict); this means that the function is guaranteed not to modify global variables, and that the pointer returned is not aliased. Aby uzyskać więcej informacji, zobacz noalias i ograniczaj.For more information, see noalias and restrict.

Domyślnie globalny stan tej funkcji jest objęty zakresem aplikacji.By default, this function's global state is scoped to the application. Aby to zmienić, zobacz stan globalny w CRT.To change this, see Global state in the CRT.

WymaganiaRequirements

ProceduraRoutine Wymagany nagłówekRequired header
mallocmalloc <stdlib.h> i <malloc.h><stdlib.h> and <malloc.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodność.For additional compatibility information, see Compatibility.

BibliotekiLibraries

Wszystkie wersje bibliotek uruchomieniowych języka C.All versions of the C run-time libraries.

PrzykładExample

// 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" );
   }
}
Memory space allocated for path name
Memory freed

Zobacz takżeSee also

Alokacja pamięciMemory Allocation
calloccalloc
zwolnionyfree
reallocrealloc
_aligned_malloc_aligned_malloc