반응형
안녕하세요. 훈츠입니다. 금일은 C 언어 에서 동적 메모리 할당에 해당하는, malloc 과 free 함수에 대체되는 new 와 delete 키워드에 대해 포스팅 해보겠습니다.
C 언어의 포인터와 메모리 할당 해제 관련글을 한번 보고 오시는것도 좋습니다.
https://rain2002kr.tistory.com/150?category=382972
포인터의 사용 방법과 포인터 접근 하는 방법 모두 동일 합니다. 하지만 동적 메모리 할당 하는 malloc() 과 free() 함수 대신 new 와 delete 를 사용하는 것이 다릅니다. 저처럼 C 를 학습 하고 C++ 학습하시는 분은 비교를 통해서 학습을 하면 좀더 효율이 높은것 같네요. 개인적 의견 입니다.
- C 언어와 마찬가지로 동적 으로 메모리 생성한 것은 반드시 해제 해주어야 메모리릭이 발생하지 않습니다.
- new 로 메모리 할당이 실패하면, 0을 리턴합니다.
- 널 포인터를 delete 해도 상관 없습니다.
- 고정 메모리 ( 변수 , 배열 )
- 동적 메모리
- -> Heap 메모리 영역
구분 | 메모리 할당 | 메모리 해제 |
C 언어 | malloc() | free() |
C++ 언어 | new | delete |
※ new 와 delete 의 대상
- 포인터 , 객체
new 형식
- new type
- new type(초기값)
- new type[개수]
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int* ptr;
ptr = new int;
*ptr = 4;
cout << "ptr :" << *ptr << " Add " <<ptr << endl;
int* ptr1;
ptr1 = new int(13);
cout << "ptr1 :" << *ptr1 <<" Add "<<ptr1 << endl;
int* ptr2;
ptr2 = new int[4];
for (int i = 0; i < 3; i++) {
ptr2[i] = i;
cout << "ptr2["<<i <<"] :" << *ptr2 + i << " Add " << ptr2 + i << endl;
}
}
'컴퓨터 언어 > C++' 카테고리의 다른 글
[C++] C++ 8일차 클래스 1 (0) | 2020.04.06 |
---|---|
[C++] C++ 7일차 메모리2 : new and delete 포인터2 (0) | 2020.04.05 |
[C++] C++ 5일차 표준 입 출력 : cin.get 함수 cin.getline 함수 (0) | 2020.04.03 |
[C++] C++ 4일차 표준 입 출력 : std::cout , endl, cin (0) | 2020.04.02 |
[C++] C++ 3일차 표준 입 출력 : Namespace (0) | 2020.04.01 |