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


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

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

  • 2016년 01월 13일에 작성됨

조회수 224


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한 후 다시 할당해야 합니다.

  • 2016년 01월 13일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close