[C++] new와 malloc의 차이

2021. 9. 15. 14:40·C++/Basic
malloc
int* p;
p = (int*)malloc(sizeof(int) * 2);

p[0] = int(0);
p[1] = int(1);
    
cout << p[0] << "\n" << p[1];

p = (int*)realloc(p, sizeof(int) * 3);

p[2] = 2;
cout << p[0] << " " << p[1] << " " << p[2] << "\n";

free(p);

- 재할당 받은 뒤에 기존에 할당받았던 값 이외에 값인 3번째에만 값을 넣어준다.

- 재할당 받은 뒤에도 기존에 값은 정상적으로 존재하는 것을 확인할 수 있다.

- 단순히 메모리 사이즈만 변경하는 것이 아닌 내용물도 복사를 한다.

- 사이즈를 줄이면 기존에 할당받았던 값은 없어진다.

 

 

new
int* p2;
p2 = new int[2];

p2[0] = 0;
p2[1] = 1;

cout << p2[0] << " " << p2[1] << "\n";

delete[] p2;

p2 = new int[2];

cout << p2[0] << " " << p2[1] << "\n";

- 할당된 후에 재할당할 때는 꼭 삭제 후 할당을 해야한다. 그렇게하지않으면 메모리가 누수된다.

 

 

 

차이점

- malloc은 메모리를 동적으로 할당하는 것만이 목적이므로 초기값을 지정해 줄 수 없지만, new의 경우는 할당과 동시에 초기화가 가능하다.

 

- new 키워드는 생성자를 자동으로 호출하게 된다. 생성자는 객체를 자동으로 초기화 해주는 함수로, malloc과 new의 가장 큰 차이점이다.

 

- 객체가 아니고, 재할당이 빈번하게 일어나야된다면, malloc과 free가 오히려 더 좋은 선택이 될 수도 있다.

 

 

 

 

참고자료 : https://blog.naver.com/PostView.naver?blogId=sj_artist&logNo=221662749914&from=search&redirect=Log&widgetTypeCall=true&directAccess=false 

 

C++] malloc 과 new의 차이!

#delete #malloc #new #free 공통점으로는 서로 heap영역에 메모리를 잡아주는 역할을 한다. 즉, 동적할당...

blog.naver.com

https://boycoding.tistory.com/204

 

C++ 07.12 - new와 delete를 사용한 동적 메모리 할당 (Dynamic memory allocation with new and delete)

new와 delete를 사용한 동적 메모리 할당 (Dynamic memory allocation with new and delete) 동적 메모리(dynamic memory) 할당이 필요하다. C++은 세 가지 기본 타입의 메모리 할당을 지원한다. 이 중 두 가지는..

boycoding.tistory.com

 

저작자표시 (새창열림)

'C++ > Basic' 카테고리의 다른 글

함수 오버로딩  (0) 2021.09.17
vector와 list의 차이점  (0) 2021.09.16
[C++] 가변인자 템플릿  (0) 2021.08.25
[C++] 람다  (0) 2021.08.24
[C++] fstream으로 입력 출력  (0) 2021.08.19
'C++/Basic' 카테고리의 다른 글
  • 함수 오버로딩
  • vector와 list의 차이점
  • [C++] 가변인자 템플릿
  • [C++] 람다
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Java
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    Java
    오블완
    티스토리챌린지
    spring
    JWT
    위클리 챌린지
    알고리즘
    JPA
    백준
    프로그래머스
    dfs
    SpringSecurity
    dp
    c++ 기초 플러스
  • hELLO· Designed By정상우.v4.10.0
chanheess
[C++] new와 malloc의 차이

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.