관리 메뉴

기억을 위한 기록들

new와 malloc의 차이점 본문

C & CPP

new와 malloc의 차이점

에드윈H 2021. 1. 19. 17:58

1. malloc은 라이브러리 제공함수로 함수 콜을 요청한다.

    new는 C++언어에서 제공하는 기본 키워드로, 별도의 라이브러리 추가 없이 바로 사용가능

 

2. malloc은 사이즈를 매개변수로 받고, 리턴타입이 void* 형 이므로 캐스트 연산자의 도움을 받아야한다.

   new는 할당할 타입을 지정하면, 알아서 할당할 타입의 포인터로 넘어온다. 그래서 할당할 타입의 포인터 변수로 받아오면 된다.

 

3. malloc은 메모리를 동적으로 할당하는 것만이 목적이라 초기값 지정 불가능.

   new는 할당과 동시에 초기화 가능

 

4. new키워드는 생성자를 자동으로 호출.

  생성자는 객체를 자동으로 초기화 해주는 함수로, malloc과 new의 가장 큰 차이점이다.

 

* new가 좋아보이긴하지만 malloc의 경우 realloc이라는 함수로 재할당이 쉽게 가능하지만, new는 대응이 없기 때문에 새로 할당->복사->해제 과정이 필요하다. 재할당이 빈번하게 필요하다면 malloc과 realloc이 더 좋은 서택이다.

 

해제하려면 malloc은 free, new는 delete로 해준다.