1. malloc(), free()
힙에서 동적으로 메모리를 할당, 할당 해제하는 데 사용한다.
malloc() 함수는 지정된 크기의 힙에 메모리 블록을 할당하는 데 사용되는 C 표준 라이브러리 함수다.
할당된 메모리의 첫 번째 바이트에 대한 포인터를 반환하거나, 할당에 실패한 경우 null 포인터를 반환한다.
free() 함수는 malloc()으로 할당된 메모리 블록을 할당 해제하는 데 사용되는 C 표준 라이브러리 함수다.
메모리 블록에 대한 포인터를 인수로 사용하고, 다시 사용할 수 있도록 시스템에 해제한다.
2. new(), delete()
C++에서 제공하는 연산자다.
new: 힙에 객체의 인스턴스를 생성하고, 생성자로 생성하는 데 사용된다.
새로 생성된 개체에 대한 포인터를 반환한다.
delete: new로 할당된 메모리를 할당 해제하고, 삭제 중인 개체의 소멸자를 호출하는 데 사용된다.
개체에 대한 포인터를 인수로 사용한다.
3. 비교
malloc(), free()
저수준 C 함수이다. C++에서 사용할 경우 #include "stdlib.h"를 해야 한다.
개체의 생성자와 소멸자를 호출하지 않는다.
malloc은 void 함수라서 반환받은 것을 해당 타입의 포인터로 형변환해야 한다.
malloc으로 할당한 경우, realloc을 활용해 메모리 크기를 조정할 수 있다.
new, delete
C++ 전용 연산자다.
개체의 생성자와 소멸자를 호출한다. 생성자를 호출해 초기값을 줄 수 있다.
이 외에도 예외 처리, 오버로드, new 배치와 같은 추가 기능이 존재한다.
new를 했을 때 반환값이 해당 타입의 포인터로 자동 반환된다.
new로 할당한 경우 직접적으로 메모리 크기를 조정할 수 있다. (재할당이 많은 경우 malloc이 나은 방법일 수도 있다.)
참고자료
https://easycode.tistory.com/15
'CS 지식' 카테고리의 다른 글
[C++] static (0) | 2025.05.08 |
---|---|
[C++] map vs unordered_map (0) | 2025.05.08 |
[C++] const와 pointer (0) | 2025.04.20 |
[C++] Cast (0) | 2025.04.19 |
[C++] 배열과 리스트 (0) | 2025.04.19 |