728x90
반응형
new 연산자
정의
데이터형의 크기를 확인하여 메모리 공간을 할당하는 연산자(동적메모리 할당)
절차
1. 어떤 데이터형과 크기를 원하는지 new 연산자에게 알려준다.
2. new 연산자는 그 데이터형과 크기에 맞는 메모리 블록을 만든다.
3. 메모리 블록의 주소를 리턴한다.
메모리 접근 방법 차이
1. 포인터 변수 초기화(정적메모리 할당)
int a;
int* b = &a;
// 메모리 접근 방법(c style) : 1. b 2. a의 주소
*
2. new 연산자(동적메모리 할당)
int* pointer = new int; // 4byte 메모리 블록 생성
// 메모리 접근 방법 : 포인터 변수인 pointer
c++에서는 new 연산자를 사용하지만, c에서는 malloc()이라는 함수를 사용하여 동적메모리 할당을 진행한다.
delete 연산자
정의
사용한 메모리를 다시 메모리 풀로 반환하는 연산자
delete pointer; // 반드시 반환해야한다.
규칙
1. new로 대입하지 않은 메모리는 delete로 해제할 수 없다.
2. 같은 메모리 블록을 연달아 두 번 연속 delete로 해제할 수 없다.
3. new[]로 메모리를 대입할 경우 delete[]로 해제한다.
4. new[]를 사용하지 않으면 delete[]를 사용할 수 없다.
Code
#include <iostream>
using namespace std;
int main() {
double* p3 = new double[3]; // double형 데이터 3개를 저장할 메모리 공간 대입
p3[0] = 0.2;
p3[1] = 0.5;
p3[2] = 0.8;
cout << "p3[1] is " << p3[1] << ".\n";
p3 = p3 + 1; // 포인터를 증가시킨다. p3의 시작 주소가 증가하게 된다.
cout << "Now p3[0] is " << p3[0] << " and "; // 0.2가 아닌 0.5
cout << "p3[1] is " << p3[1] << "\n."; // 0.5가 아닌 0.8
p3 = p3 - 1; // 다시 시작 주소 원상복귀
delete[] p3; // 메모리 해제
return 0;
}
결과
더보기
p3[1] is 0.5.
Now p3[0] is 0.5 and p3[1] is 0.8
728x90
반응형
'Software > C++' 카테고리의 다른 글
[C++ 기초] 14. 반복문 (0) | 2023.03.23 |
---|---|
[C++ 기초] 13. 포인터 심화 (1) | 2023.03.22 |
[C++ 기초] 11. 포인터 기초 (0) | 2023.03.20 |
[C++ 기초] 10. 공용체(Union)와 열거체(Enum) (1) | 2023.03.12 |
[C++ 기초] 9. 구조체(Struct) (0) | 2023.03.12 |
댓글