1
2
3
4
5
6
7
8
9
10
11
12


int num = 1;
 
int *a;
= new int;
= #         
 
int *p;
= a;
 
= NULL;
delete a;
 
cs





new는 힙영역에서 필요한 동적 메모리를 확보 후 그 주소값을 포인터 변수에 넘겨줌? 그리고 delete는 힙영역에 할당된 동적 메모리를 해제?


new로 힙에서 메모리를 확보하면 그 메모리는 다른 곳에서 사용하지 못하게함? 


그래서 delete로 메모리를 해제 해주고 다른 동적할당 할 때 사용할 수 있는 만드는 것? 이런 개념이 맞나? 


delete는 동적 메모리만 해제 해주니 자동변수 같은 int num을 포인터 변수 a가 주소값을 받아서 그대로 delete 해버리면 에러...


즉 delete a; 를 했는데 a에 null을 안넣어주고 num의 주소값을 가리키고 있는 상태면, 


delete는 해당 a의 주소값으로 가서 동적 메모리를 해제 하려고 하는데 이건 동적 메모리가 아니니 에러가 뜨는?


뭐 이리 죧같노


그리고 포인터 변수 선언만 하면 그 포인터 변수는 뭘 가리키고 있는거? 메모리를 가리키고 있긴 한거 같은데... 힙? 스택?


생각할 수록 궁굼증만 늘어나느 개빡ㅊ쳧