1 2 3 4 5 6 7 8 9 10 11 12 | int num = 1; int *a; a = new int; a = # int *p; p = a; a = NULL; delete a; | cs |
new는 힙영역에서 필요한 동적 메모리를 확보 후 그 주소값을 포인터 변수에 넘겨줌? 그리고 delete는 힙영역에 할당된 동적 메모리를 해제?
new로 힙에서 메모리를 확보하면 그 메모리는 다른 곳에서 사용하지 못하게함?
그래서 delete로 메모리를 해제 해주고 다른 동적할당 할 때 사용할 수 있는 만드는 것? 이런 개념이 맞나?
delete는 동적 메모리만 해제 해주니 자동변수 같은 int num을 포인터 변수 a가 주소값을 받아서 그대로 delete 해버리면 에러...
즉 delete a; 를 했는데 a에 null을 안넣어주고 num의 주소값을 가리키고 있는 상태면,
delete는 해당 a의 주소값으로 가서 동적 메모리를 해제 하려고 하는데 이건 동적 메모리가 아니니 에러가 뜨는?
뭐 이리 죧같노
그리고 포인터 변수 선언만 하면 그 포인터 변수는 뭘 가리키고 있는거? 메모리를 가리키고 있긴 한거 같은데... 힙? 스택?
생각할 수록 궁굼증만 늘어나느 개빡ㅊ쳧
대충 님이 생각하는대로 작동하는거 맞음 아무것도 안넣으면 쓰레기값 들어가고