C++ new와 malloc의 공통점과 차이점

200원짜리개발자·2023년 6월 7일
2

C++

목록 보기
3/39
post-thumbnail

공통점

newmalloc둘 다 동적으로 메모리를 할당을 위해서 사용한다.
메모리를 해제하기 위해서는
newdelete
mallocfree
를 해주면 된다.

차이점

  1. mallocfree라이브러리에서 제공하는 함수이다.
    하지만 newdeletec++언어에서 제공하는 키워드이다.

  2. malloc은 메모리를 동적으로 할당하는 것만 하지만, new는 메모리를 동적으로 할당함과 동시에 초기화가 가능하다.
    그렇기에 malloc으로 객체를 동적할당하면 생성자가 안 호출되지만,
    new로 객체를 동적할당하면 생성자가 호출된다.(delete만나면 소멸자를 호출한다.)

  3. malloc같은 경우는 메모리를 해당 크기를 지정해줘야한다.
    하지만 new같은 경우는 메모리를 크기를 알아서 잡아준다.

  4. mallocvoid\*형 메모리 할당을 해준다.
    사이즈 지정을 해줘야 한다.(위에 나옴)
    그리고 원하는 타입으로 바꾸기 위한 캐스팅필요하다.
    하지만 new원하는 타입을 지정해서 할당하기 때문에 캐스팅필요없다.

  5. 객체는 new를 사용하는 편이 맞다.
    하지만 재할당이 많이 일어나는 경우에는 malloc으로 동적할당하는 경우가 나올 수 있다.

왜냐? new로 할당 받은 공간은 realloc같은 함수가 없어 다시 할당을 해줘야 하기 때문이다.
복사->삭제->할당 과정이 다시 일어난다.
하지만 mallocrealloc이라는 함수를 통하여 할당 받은 공간을 간단히 재할당 할 수 있다.

profile
고3, 프론트엔드

0개의 댓글