mallocmalloc

메모리 블록을 할당합니다.Allocates memory blocks.

구문Syntax

void *malloc(
   size_t size
);

매개 변수Parameters

sizesize
할당할 바이트입니다.Bytes to allocate.

반환 값Return Value

malloc 은 할당 된 공간에 대 한 void 포인터를 반환 하거나 사용 가능한 메모리가 부족 한 경우 NULL 을 반환 합니다.malloc returns a void pointer to the allocated space, or NULL if there is insufficient memory available. 이외의 형식에 대 한 포인터를 반환 하려면 void 반환 값에 형식 캐스팅을 사용 합니다.To return a pointer to a type other than void, use a type cast on the return value. 반환 값이 가리키는 스토리지 공간은 맞춤 요구 사항이 기본 맞춤보다 작거나 같은 모든 형식의 개체 스토리지에 적절하게 맞춰지도록 보장됩니다.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. Visual C++ 기본 맞춤은 또는 8 바이트에 필요한 맞춤입니다 double .(In Visual C++, the fundamental alignment is the alignment that's required for a double, or 8 bytes. 64 비트 플랫폼을 대상으로 하는 코드에서는 16 바이트입니다. _Aligned_malloc 를 사용 하 여 맞춤 요구 사항이 더 큰 개체에 대 한 저장소를 할당 합니다. 예를 들어, 및의 SSE __m128 형식과 __m256 를 사용 하 여 선언 된 형식 ( __declspec(align( n )) 여기서 n 은 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. Size 가 0 인 경우 malloc 는 힙에서 길이가 0 인 항목을 할당 하 고 해당 항목에 대 한 유효한 포인터를 반환 합니다.If size is 0, malloc allocates a zero-length item in the heap and returns a valid pointer to that item. 요청 된 메모리 양이 적은 경우에도 항상 malloc에서 반환을 확인 합니다.Always check the return from malloc, even if the amount of memory requested is small.

설명Remarks

Malloc 함수는 최소 크기 바이트의 메모리 블록을 할당 합니다.The malloc function allocates a memory block of at least size bytes. 맞춤 및 유지 관리 정보에 필요한 공간 때문에 블록은 크기 바이트 보다 클 수 있습니다.The block may be larger than size bytes because of the space that's required for alignment and maintenance information.

메모리 할당이 실패 하거나 요청 된 메모리 양이 _HEAP_MAXREQ을 초과 하는 경우 mallocerrnoenomem 으로 설정 합니다.malloc sets errno to ENOMEM if a memory allocation fails or if the amount of memory requested exceeds _HEAP_MAXREQ. 이 오류 및 다른 오류 코드에 대한 자세한 내용은 errno, _doserrno, _sys_errlist 및 _sys_nerr를 참조하세요.For information about this and other error codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.

시작 코드는 malloc 를 사용 하 여 _environ, envpargv 변수에 대 한 저장소를 할당 합니다.The startup code uses malloc to allocate storage for the _environ, envp, and argv variables. 다음 함수와 해당 와이드 문자는 malloc도 호출 합니다.The following functions and their wide-character counterparts also call malloc.

C++ _set_new_mode 함수는 malloc에 대한 새 처리기 모드를 설정합니다.The C++ _set_new_mode function sets the new handler mode for malloc. 새 처리기 모드는 실패 시 malloc_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. 기본적으로 malloc 은 메모리 할당 실패 시 새 처리기 루틴을 호출 하지 않습니다.By default, malloc does not call the new handler routine on failure to allocate memory. 이 기본 동작을 재정의 하 여 malloc 에서 메모리를 할당 하지 못할 때 mallocnew 연산자가 같은 이유로 실패 했을 때와 동일한 방식으로 새 처리기 루틴을 호출 하도록 할 수 있습니다.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. 기본값을 재정의 하려면 _set_new_mode(1) 프로그램에서 조기에 호출 하거나 NEWMODE를 사용 하 여 연결 합니다. OBJ ( 링크 옵션참조).To override the default, call _set_new_mode(1) early in your program, or link with NEWMODE.OBJ (see Link Options).

응용 프로그램이 C 런타임 라이브러리의 디버그 버전에 연결 된 경우 malloc_malloc_dbg으로 확인 됩니다.When the application is linked with a debug version of the C run-time libraries, malloc resolves to _malloc_dbg. 디버깅 프로세스 동안 힙을 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙 정보를 참조하세요.For more information about how the heap is managed during the debugging process, see CRT Debug Heap Details.

malloc 는 및로 표시 됩니다 __declspec(noalias) __declspec(restrict) .이는 함수가 전역 변수를 수정 하지 않도록 보장 하 고 반환 된 포인터에 별칭이 지정 되지 않음을 의미 합니다.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. 자세한 내용은 noaliasrestrict를 참조하세요.For more information, see noalias and restrict.

기본적으로이 함수의 전역 상태는 응용 프로그램으로 범위가 지정 됩니다.By default, this function's global state is scoped to the application. 이를 변경 하려면 CRT의 전역 상태를 참조 하세요.To change this, see Global state in the CRT.

요구 사항Requirements

루틴에서 반환된 값Routine 필수 헤더Required header
mallocmalloc <stdlib.h> 및 <malloc.h><stdlib.h> and <malloc.h>

호환성에 대한 자세한 내용은 Compatibility을 참조하세요.For additional compatibility information, see Compatibility.

라이브러리Libraries

모든 버전의 C 런타임 라이브러리입니다.All versions of the C run-time libraries.

예제Example

// 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

참고 항목See also

메모리 할당Memory Allocation
calloccalloc
늘릴free
reallocrealloc
_aligned_malloc_aligned_malloc