malloc, new 둘 중 어느 걸 써야 하나요?

조회수 4256회

C++에서는 동적할당하는 여러 가지 방법이 있잖아요? 그럼 언제 malloc을 써야 되고 언제 new를 써야 하나요?

malloc했으면 free new했으면 delete 둘을 섞어서 쓰면 안 되는 건 알고 있습니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    C를 써야 하는 상황이 아니면, malloc은 쓰지 마세요. new만 쓰세요. 그리고 freedelete는 쓰는 방법이 좀 다릅니다.

    char *pBuffer = new char[1024]; 과 같이 큰 메모리를 할당하는 상황에서

    delete pBuffer; 이건 정확한 방법이 아닙니다. 원소 하나만 delete 될 수도 있고, heap이 손상될 수도 있습니다.

    대신에 배열의 데이터를 delete하려면 다음과 같이 쓰세요. delete[] pBuffer;

    또, newmalloc과 다릅니다. newtype에 맞춰서 생성자를 call 해주는 등 malloc을 쓰는 것보다 type safe한 방법입니다.

    단, data buffer의 사이즈를 바꿀 때는 malloc을 쓰는게 더 낫습니다. newrealloc같이 효율적으로 memory 크기를 늘였다 줄였다 해주는 기능은 없어서 크기를 바꾸려면 delete한 후 다시 할당해야 합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)