C malloc() 동적 메모리 할당 함수
메모리를 동적으로 할당받습니다. 정적 메모리와 달리 동적 할당 메모리는 필요할 때 메모리를 생성하고 필요 없어지면 시스템에 반환할 수 있습니다. 메모리 또한 시스템의 리소스이므로 필요할 때 적절히 사용하는 것이 중요합니다.
반환 값이 void 타입인 이유는 바이트 한 개 크기의 char에서 int, long, 또는 구초체와 같은 다양한 크기와 형태의 변수 메모리를 할당 받은 포인터로 받을 수 있음을 의미합니다.
예로 변수를 char *ptr; 로 했다면,
ptr = ( char *) malloc( 50);
로 작성하고, 메모리의 포인터를 받을 변수를 int *ptr;로 선언하고, int 값을 50개 정도 저장할 수 있는 메모리를 구한다면,
ptr = ( int *)malloc( 50 * sizeof( int));
로 처리합니다.
- 헤더: stdlib.h
- 형태: void *malloc(size_t size)
- 인수: size_t size 필요한 메모리 크기로 단위는 바이트
void * 메모리가 할당된 포인터, 메모리 확보에 실패했다면 NULL을 반환 - 반환: void * 메모리가 할당된 포인터, 메모리 확보에 실패했다면 NULL을 반환
C언어 malloc() 함수 예제
#include <stdio.h>
#include <stdlib.h>
int main( void)
{
char *ptr_char;
int *ptr_int;
int ndx;
ptr_char = (char *)malloc( 50);
ptr_int = (int *)malloc( 50 * sizeof( int));
for ( ndx= 0; ndx < 50; ndx++)
{
ptr_char[ndx] = 'a';
ptr_int[ndx] = 2007 +ndx;
}
for ( ndx= 0; ndx < 50; ndx++)
{
printf( "%c %d\n", ptr_char[ndx], ptr_int[ndx]);
}
free( ptr_char);
free( ptr_int );
return 0;
}
C언어 malloc() 예제 실행 결과
]$ ./a.out
a 2007
a 2008
a 2009
a 2010
중략
a 2050
a 2051
a 2052
a 2053
a 2054
a 2055
a 2056
]$
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 calloc 함수 요소 크기 지정 동적 메모리 할당 (2) | 2020.03.12 |
---|---|
C언어 strtof 함수 실수 문자열을 float형 실수로 변환 (0) | 2020.03.12 |
C언어 strtod 함수 실수 문자열을 double형 실수로 변환 (0) | 2020.03.12 |