다음을 통해 공유


malloc

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

void *malloc(
   size_t size 
);

매개 변수

  • size
    할당할 바이트입니다.

반환 값

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

설명

malloc 함수는 최소한 메모리 블록을 size 바이트 할당합니다. 블록은 맞춤 및 유지 관리 정보에 필요한 공간으로 인해 size 바이트보다 클 수 있습니다.

malloc는 메모리 할당이 실패하거나 요청한 메모리 크기가 _HEAP_MAXREQ를 초과하는 경우 errno는 ENOMEM로 설정됩니다. 이 오류 코드 및 기타 오류 코드에 대한 자세한 내용은 errno, _doserrno, _sys_errlist 및 _sys_nerr을 참조하십시오.

_environ, envp, argv 변수에 대한 저장소를 할당하려면 시작코드에 malloc를 사용합니다. 다음 함수와 와이드 문자 상응부도 malloc을 호출합니다.

calloc

fscanf

_getw

setvbuf

_exec 함수

fseek

_popen

_spawn 함수

fgetc

fsetpos

printf

_strdup

_fgetchar

_fullpath

putc

시스템

fgets

fwrite

putchar

_tempnam

fprintf

getc

_putenv

ungetc

fputc

getchar

puts

vfprintf

_fputchar

_getcwd

_putw

vprintf

fputs

_getdcwd

scanf

 

fread

가져오기

_searchenv

 

C++ _set_new_mode 함수는 malloc에 대한 새 처리기를 설정합니다. 새 처리기 모드는 실패 시 malloc이 _set_new_handler에서 설정한 대로 새 처리기 루틴을 호출하는지 여부를 나타냅니다. 기본적으로 malloc은 메모리 할당에 실패한 경우 새 처리기 루틴을 호출하지 않습니다. malloc이 메모리 할당에 실패하면 malloc이 새 처리기 루틴을 new 연산자가 같은 이유로 실패할 때와 동일한 방식으로 호출할 수 있도록 기본 동작을 재정의할 수 있습니다. 기본값을 재정의하려면 다음을 호출합니다.

_set_new_mode(1)

초기 프로그램 또는 NEWMODE.OBJ에 대한 링크(링크 옵션 참조).

응용 프로그램이 C 런타임 라이브러리의 디버그 버전에 연결되면 malloc은 _malloc_dbg가 됩니다. 디버깅 프로세스 동안 힙을 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙 정보를 참조하십시오.

malloc는 __declspec(noalias) 및 __declspec(restrict)로 표시됩니다. 즉, 함수가 전역 변수를 수정하지 않고 반환된 포인터가 별칭이 지정되지 않도록 보증합니다. 자세한 내용은 noaliasrestrict를 참조하십시오.

요구 사항

루틴

필수 헤더

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

해당 .NET Framework 항목

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제을 참조하십시오.

참고 항목

참조

메모리 할당

calloc

free

realloc

_aligned_malloc