정적할당 메모리에서는
int buffer[80];
이것을 다시 100개로 늘릴때는 불가능하다.
이럴때 동적할당 메모리가 가능하다.
예전 C에서는 // malloc 과 free라는 함수를 사용하였다.
int *p = (int *) malloc(sizeof(int) *10 ) // 이것은 힙영역에 저장
// void 주소값이 반환된다. 그래서 타입변환이 필요하다.
p[0] = 10; // 이렇게 사용이 가능했다.
하지만 이것은 할당후 사라지지 않는다.
그래서 free(p);
하지만 C++에서는 // new 와 delete 라는 연산자를 사용하였다.
int *p = new int[10];
p[0] = 100; // 이런식으로 사용가능
delete[] p;
이것의 차이는 함수는 선언, 기본적 제공하지 않음
하지만 연산자는 선언필요없이 언어적으로 기본적으로 사용이 가능하다
void sub()
{
int *pi = new int; // ①
*pi = 67; // 메모리 누수
pi = new int; // ②
*pi = 99; // 메모리 누수가 발생한다.
}