다음을 통해 공유


malloc

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

구문

void *malloc(
   size_t size
);

매개 변수

size
할당할 바이트입니다.

반환 값

malloc 는 할당된 공간에 대한 void 포인터를 반환하거나 NULL 사용 가능한 메모리가 부족한 경우 반환합니다. void가 아닌 형식에 대한 포인터를 반환하려면 반환 값에 형식 캐스팅을 사용하세요. 반환 값이 가리키는 스토리지 공간은 기본 맞춤보다 작거나 같은 맞춤 요구 사항이 있는 모든 개체 형식의 스토리지에 적합하게 정렬됩니다. (Visual C++에서 기본 맞춤은 8바이트 또는 8바이트에 double필요한 맞춤입니다. 64비트 플랫폼을 대상으로 하는 코드에서는 16바이트입니다.) 맞춤 요구 사항이 더 큰 개체(예: SSE 형식 __m128__m256및 8보다 큰 위치를 n 사용하여 선언된 형식)에 스토리지를 할당하는 데 __declspec(align( n )) 사용합니다_aligned_malloc. size가 0이면 malloc는 힙에서 길이가 0인 항목을 할당하고 해당 항목에 대한 유효한 포인터를 반환합니다. 요청된 메모리의 양이 작은 경우에도 malloc의 반환 값을 항상 확인하세요.

설명

malloc 함수는 size바이트 이상의 메모리 블록을 할당합니다. 이 블록은 맞춤 및 유지 관리 정보에 필요한 공간이기 때문에 size보다 클 수 있습니다.

메모리 할당에 실패하거나 요청된 메모리의 양이 _HEAP_MAXREQ를 초과하는 경우 mallocerrnoENOMEM으로 설정합니다. 이 코드 및 기타 오류 코드에 대한 자세한 내용은 , _doserrno, _sys_errlist_sys_nerr를 참조하세요errno.

시작 코드는 malloc를 사용하여 _environ, envpargv 변수에 대해 스토리지를 할당합니다. 다음 함수 및 해당 와이드 문자 함수도 malloc를 호출합니다.

C++ _set_new_mode 함수는 새 처리기 모드를 malloc설정합니다. 새 처리기 모드는 실패 시 malloc_set_new_handler에서 설정한 대로 새 처리기 루틴을 호출하는지 여부를 나타냅니다. 기본적으로 malloc 메모리를 할당하지 못한 경우 새 처리기 루틴을 호출하지 않습니다. malloc가 메모리 할당에 실패한 경우 mallocnew 연산자가 같은 이유로 실패했을 때 수행하는 것과 동일한 방식으로 새 처리기 루틴을 호출하도록 이 기본 동작을 재정의할 수 있습니다. 기본값을 재정의하려면 프로그램 초기에 호출 _set_new_mode(1) 하거나 링크 옵션 참조)으로 NEWMODE.OBJ 연결합니다.

애플리케이션이 C 런타임 라이브러리 malloc 의 디버그 버전과 연결되면 .로 확인 _malloc_dbg됩니다. 디버깅 프로세스 중에 힙을 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙 세부 정보를 참조하세요.

malloc가 표시 __declspec(noalias) 되고 .__declspec(restrict) 이러한 특성은 함수가 전역 변수를 수정하지 않도록 보장되고 반환된 포인터가 별칭이 지정되지 않음을 의미합니다. 자세한 내용은 noaliasrestrict를 참조하세요.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
malloc <stdlib.h><malloc.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

라이브러리

모든 버전의 C 런타임 라이브러리입니다.

예시

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

참고 항목

메모리 할당
calloc
free
realloc
_aligned_malloc