본문 바로가기

IT/c, c++

[c,c++] malloc 와 new 의 차이

우리는 C에서 메모리를 할당할 경우 malloc 함수를 통해 동적 메모리 할당을 한다.

그리고 c++에서는 메모리 할당하는 경우로 new를 사용하여 편리하게 메모리를 할당 할 수 있다.

 

malloc의 함수 사용 -> void *malloc(size_f size);

위의 형태가 원형인 함수로서 size에 주어진 만큼의 byte수를 갖는 메모리 공간을 동적으로 할당하여 메모리 주소를 포인터 방식으로 리턴 해주는 함수이다.

 

사용법은

int n= 갯수;

int* pA = (int*) malloc(sizeof(int)*n);

와 같이 쓰인다.

sizeof(int)가 입력됨으로써 4byte의 크기(자료형의 크기)를 지시해주고

malloc은 void*형으로 리턴값이 나오기 때문에 int*형으로 형변환을 해줌으로써 int*형 변수 pA에 주소값을 넘긴다.

 

이렇게 C에서 사용하던 malloc을 c++에서는 new 연산자로 사용한다.

int* pA = new int [갯수];

 

int* pArr = (int*) malloc(sizeof(int)*갯수);

int* pArr = new int[갯수];

 

메모리 할당을 했으므로 해제도 해야한다.

malloc이 free(pA); . free(pArr); 로 메모리 해제

new 는 delete pA;, delete []pArr; 로 메모리 해제 <delete 또한 함수가 아닌 연산자>

'IT > c, c++' 카테고리의 다른 글

[c] 소켓 생성 기본  (0) 2014.01.23
[c] ASKII 코드 출력  (0) 2014.01.23
Template 코드의 선언과 정의는 하나의 파일에 넣자!  (0) 2014.01.23
[c] IP Setting  (0) 2014.01.23
[c] File 입출력  (0) 2014.01.23