- new로 대입하지 않은 메모리는 delete로 해제할 수 없다
- 같은 메모리 블록을 연달아 두 번 delete로 해제할 수 없다.
- new[]로 메모리를 대입할 경우 delete[]로 해제한다
- 대괄호를 사용하지 않았다면 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));
로 한다.