ggjae / Algorithm-CS

🎅 1일 1알고리즘
0 stars 0 forks source link

[C++] malloc과 new의 차이점 #42

Open ggjae opened 3 years ago

ggjae commented 3 years ago

C언어에서의 동적 할당

malloc - free

include 에 있고, 헤더 내 이미 구현된 malloc 메소드이고, 입력받은 바이트크기만큼 메모리 공간을 Heap memory에 할당해줌. malloc으로 메모리를 동적으로 받고 해제하지 않는다면, 메모리 릭이 일어날 수 있어 free를 꼭 사용해주는 것이 좋다.

new

C++의 동적할당에 대해 키워드로 지원해주는데, 헤더파일을 따로 포함시키지 않아도 사용할 수 있다. malloc과 같이 Heap memory에 할당해주고, delete로 해제할 수 있다. new 또한 해제를 꼭 사용해주는 것이 좋다.

차이점

  1. malloc은 기본적으로 사이즈를 받아, 캐스트 연산자들의 도움을 받아 코딩을 진행하지만, new는 자동으로 할당할 타입만큼의 사이즈를 힙 메모리에 할당함으로 new가 더 편하다.

  2. malloc은 동적할당만을 의도로 하고, 초기화는 불가능하다. new는 초기화까지 가능하다.

  3. new는 생성자를 자동으로 호출하게 되고, 생성자는 객체를 자동으로 초기화해주는 함수이다.