malloc, new 둘 중 어느 걸 써야 하나요?
조회수 4283회
C++에서는 동적할당하는 여러 가지 방법이 있잖아요?
그럼 언제 malloc
을 써야 되고 언제 new
를 써야 하나요?
malloc
했으면 free
new
했으면 delete
둘을 섞어서 쓰면 안 되는 건 알고 있습니다.
1 답변
-
C
를 써야 하는 상황이 아니면,malloc
은 쓰지 마세요.new
만 쓰세요. 그리고free
와delete
는 쓰는 방법이 좀 다릅니다.char *pBuffer = new char[1024];
과 같이 큰 메모리를 할당하는 상황에서delete pBuffer;
이건 정확한 방법이 아닙니다. 원소 하나만delete
될 수도 있고, heap이 손상될 수도 있습니다.대신에 배열의 데이터를
delete
하려면 다음과 같이 쓰세요.delete[] pBuffer;
또,
new
는malloc
과 다릅니다.new
는type
에 맞춰서 생성자를 call 해주는 등malloc
을 쓰는 것보다type safe
한 방법입니다.단, data buffer의 사이즈를 바꿀 때는
malloc
을 쓰는게 더 낫습니다.new
는realloc
같이 효율적으로 memory 크기를 늘였다 줄였다 해주는 기능은 없어서 크기를 바꾸려면delete
한 후 다시 할당해야 합니다.
댓글 입력