new 연산자와 delete 연산자

개발자는엉금엉금·2022년 9월 30일
0

💡new 연산자:어떤 데이터형을 원하는지 new 연산자에게 알려주면, new 연산자는 그에 알맞은 크기의 메모리 블록을 찾아내고 그 블록의 주소를 리턴합니다.

💡delete 연산자:사용한 메모리를 다시 메모리 폴로 환수, 환수된 메모리는 프로그램의 다른 부분이 다시 사용

📢delete 유의할 점

  1. new로 대입하지 않은 메모리는 delete로 해제할 수 없다
  2. 같은 메모리 블록을 연달아 두 번 delete로 해제할 수 없다.
  3. new[]로 메모리를 대입할 경우 delete[]로 해제한다
  4. 대괄호를 사용하지 않았다면 delete도 대괄호를 사용하지 x

💻예제코드

#include <iostream>

using namespace std;

int main()
{
	int* ps = new int;
	delete ps;
	//int *numPtr1;
	//numPtr1 = (int*)malloc(sizeof(int));
	double* p3 = new double[3];
	//double형 포인터 변수가 크기가 3인 double형의 배열을 찾아준다.
	p3[0] = 0.2;
	p3[1] = 0.5;
	p3[2] = 0.8;

	cout << "p3[1] is " << p3[1] << endl;
	p3 = p3 + 1;

	cout << "p3[1] is " << p3[1] << endl;
	//p3[1] = 0.8로 출력이 되지만, p3[2]는 가리키는 값이 없으므로 오류가 난다.

	delete[] p3;

	return 0;
}

C언어에서 동적할당은 int* numPtr1; numPtr1 = (int*)malloc(sizeof(int)); 로 한다.

0개의 댓글