int a;처럼 선언한 a는 스택에 할당되고, new 내지는 malloc을 이용하면 힙이라는 공간에 메모리가 할당됨 - dc Cpp
17번(wjd918273)2020-07-16 09:00
답글
스택에는 당연히 delete나 free를 해줄 필요가 없음. 힙에나 하는거지 - dc Cpp
17번(wjd918273)2020-07-16 09:00
답글
동적할당 한 적 없는놈에 접근해서 해제하려고 하면 그것도 오류가 난당 - dc Cpp
17번(wjd918273)2020-07-16 09:01
답글
그람 스택은 전혀 상관없고 new랑 malloc만 해제해주면 누수 없는거임?
익명(118.176)2020-07-16 09:02
답글
일단 그렇지. 프로그램이 복잡해지면서 서브루틴에서 new, malloc해주고나서 까먹거나 하는식으로 해제 못하는 경우도 발생할 수 있는데, 꼼꼼히 찾아주자 - dc Cpp
17번(wjd918273)2020-07-16 09:05
답글
고마워 미도리!!
익명(118.176)2020-07-16 09:05
답글
스택에 할당된 변수에 힙에 할당된 객체를 담아서 사용하고 그러는데, 서브루틴 벗어나면 스택은 자동으로 메모리에서 제거(엄밀히 말하면 제거되진 않고 콜스택상에서 서브루틴 빠져나갈 때 없는데이터로 취급하게 되니 쓰레기값으로 남음)되지만 힙은 그대로기 때문에 해당 객체에 접근할 수 없게되고 그런경우 해제할 수 없으니 메모리 누수 - dc Cpp
17번(wjd918273)2020-07-16 09:06
해당 객체를 가리키는 변수가 1개 이상이라면 접근이 가능하지만 0개가 되는 경우 더이상 접근할 수가 없는거지. 반대로 이미 해제된 메모리를 가리키는 변수도 남아있을 수 있겠지, 이 경우는 댕글링 포인터라고 함. 해제해 준 후에는 nullptr를 가리키든 하는 방식으로 해제된 메모리에 접근 시도 할 일이 없도록 해주자. - dc Cpp
int a;처럼 선언한 a는 스택에 할당되고, new 내지는 malloc을 이용하면 힙이라는 공간에 메모리가 할당됨 - dc Cpp
스택에는 당연히 delete나 free를 해줄 필요가 없음. 힙에나 하는거지 - dc Cpp
동적할당 한 적 없는놈에 접근해서 해제하려고 하면 그것도 오류가 난당 - dc Cpp
그람 스택은 전혀 상관없고 new랑 malloc만 해제해주면 누수 없는거임?
일단 그렇지. 프로그램이 복잡해지면서 서브루틴에서 new, malloc해주고나서 까먹거나 하는식으로 해제 못하는 경우도 발생할 수 있는데, 꼼꼼히 찾아주자 - dc Cpp
고마워 미도리!!
스택에 할당된 변수에 힙에 할당된 객체를 담아서 사용하고 그러는데, 서브루틴 벗어나면 스택은 자동으로 메모리에서 제거(엄밀히 말하면 제거되진 않고 콜스택상에서 서브루틴 빠져나갈 때 없는데이터로 취급하게 되니 쓰레기값으로 남음)되지만 힙은 그대로기 때문에 해당 객체에 접근할 수 없게되고 그런경우 해제할 수 없으니 메모리 누수 - dc Cpp
해당 객체를 가리키는 변수가 1개 이상이라면 접근이 가능하지만 0개가 되는 경우 더이상 접근할 수가 없는거지. 반대로 이미 해제된 메모리를 가리키는 변수도 남아있을 수 있겠지, 이 경우는 댕글링 포인터라고 함. 해제해 준 후에는 nullptr를 가리키든 하는 방식으로 해제된 메모리에 접근 시도 할 일이 없도록 해주자. - dc Cpp