일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- file open
- 국토교통부
- C++ API
- 청량리역한양수자인192
- 찾다죽는줄
- 수도권주택공급
- object
- meta table
- lua setup
- lua for windows
- 월세
- file write
- 등록임대주택
- 중소규모택지
- 티몬삼겹살데이
- C API
- 엑스퍼트2주년
- 엑스퍼트생일축하해
- 프리미어 영상저장
- TCP/IP
- Lua
- lua install
- 프리미어 영상변환
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- file read
- QT TCP
- QTcpServer
- lua interpreter
- FILE TRANSFER
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
[C, C++] malloc, free, new, delete 차이점 본문
그럼 이제 new와 malloc의 차이점에 대해 알아보겠습니다.
1.
malloc은 해당 포인터의 타입을 모르기 때문에 리턴값의 자료형은 (void *)입니다. 때문에 malloc함수를 사용시
int * i = (int*) malloc(sizeof(int))로 즉, 자료형을 앞에 선언해 줘야 합니다.
하지만 new는 type-safe로 해당 객체에 맞는 포인터로 반환해 줍니다.
때문에 별도의 자료형 선언을 할 필요가 없지요.
(type-safe란 컴파일러가 타입형을 확인해주는 것입니다.
길게 풀어 써 보자면 int형은 int형으로 String형은 String형으로 잘 저장되고 있는지 확인하는 것입니다.)
2.
new를 이용해 객체를 생성하면 초기 값을 줄 수 있습니다.
Test a = new Test(123); 이런 식으로요.
즉, new로 객체를 생성하면 생성자가 호출된다는 뜻입니다.
하지만 malloc은 생성자 호출 기능이 없습니다.
즉, 초기값을 줄 수 없습니다.
3.
new를 통해 객체생성시 에러가 발생하면 예외처리를 하지만
malloc은 예외처리 없이 NULL값을 반환하게 됩니다.
4.
malloc은 realloc으로 할당된 메모리 크기를 재조정이 가능합니다.
하지만 new는 할당된 크기에 대한 메모리 재조정이 불가능 합니다.
delete와 free의 차이점은 다음과 같습니다.
메모리를 해제한다는 점은 같지만
delete는 소멸자를 호출해 줍니다.
하지만 free는 소멸자를 호출해 줄 기능을 갖고 있지 않습니다.
동적으로 메모리를 할당받게 되면 반드시 해제시켜야 한다고 많이 말씀들 하십니다.
저도 같은 생각이고요.
하지만 프로그램이 다 끝나면 운영체제에서 메모리를 반환해 줍니다.
또한 컴퓨터 성능이 좋아지고 메모리 공간도 많아짐에 따라 굳이 해제의 필요성도 못 느낀다는 경향도 있습니다.
가비지 컬렉터를 사용해 효율적인 메모리 해제를 사용하자는 글도 보았습니다.
하지만 메모리 할 당시 해제하는 습관을 드리는 것을 추천을 합니다.
'1. 프로그래밍 > 5) C++' 카테고리의 다른 글
드로이드캠을 이용하여 스마트폰 카메라를 IP 카메라처럼 사용하기 (3) | 2020.12.02 |
---|---|
linux unistd.h write() command (0) | 2020.03.16 |
[C, C++] .h와 .hpp의 차이점 (0) | 2020.03.11 |
sleep(0)와 sleep(1)의 차이점 (1) | 2019.12.04 |
뮤텍스와 세마포어 mutex semaphore (0) | 2019.12.04 |