동적 메모리 할당


malloc 함수

- 동적으로 메모리를 할당하는 함수 (힙 영역에 메모리를 할당)

#include <stdlib.h>

void* malloc(size_t size) //malloc 함수의 원형

- 할당한 메모리의 주소(첫 번째 바이트의 주소)를 리턴, 실패시 NULL 리턴

void* 인 이유

- malloc은 메모리 할당 함수이기 때문에 

  개발자가 어떠한 데이터 형(float, int, double 등)을 저장할지 예측 불가

  따라사 알맞은 용도로 변환하여 사용 할 수 있도록 void 사용

ex)

int *i = (int *) malloc (sizeof(int));

- malloc(sizeof(int)) == 힙 영역에 4바이트 할당 받는다.

- (int *) == void * 가 int * 형으로 변환

- int * 가 *i 에 대입 


free 함수

- 힙 영역에 할당된 메모리를 해제하는 함수

#include<stdlib.h>

void* free(void* ptr) //free 함수의 원형


calloc 함수

#include<stdlib.h>

void* calloc(size_t  elt_count, size_t  elt_size) //calloc 함수 원형

- calloc 함수는 elt_size 크기의 변수를 elt_count개 만큼 저장 할 수 있는 메모리 공간을 할당 하라는 의미를 갖는다.


malloc 함수와 calloc함수의 차이점

malloc은 할당된 공간의 값을 바꾸지 않는다.

calloc은 할당된 공간의 값을 모두 0으로 초기화 한다.


realloc함수

-이미 할당한 공간의 크기를 바꿀 때 realloc 함수를 사용한다.

#include<stdlib.h>

void* realloc(void* memblock, size_t size); //realloc 함수의 원형

-realloc은 이미 할당한 포인터 변수를 memblock에 넣고 바꾸고 싶은 공간의 크기를 size에 입력하여 사용한다.


'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04
가변인자 함수  (0) 2018.01.03
포인터 (pointer)  (0) 2015.07.25
배열(array)  (0) 2015.07.25
메모리구조(스택, 힙 , 데이터 영역)  (0) 2015.07.21

+ Recent posts