[C++] 메모리 누수

[C++] 메모리 누수

작성일 2024.03.20댓글 1건
    게시물 수정 , 삭제는 로그인 필요

C++ 동적할당 파트를 공부하고 있는데, 메모리 누수 관련 문제2개를 모르겠어서 여쭤봅니다.

Q. 함수 f()가 실행되고 난 뒤 메모리 누수가 발생하는지 판단하고 메모리 누수가 발생하면 발생하지 않도록 수정해라.
(1)

(2)



(1)에서 
q가 가르키고있는게 포인터p이고, p는 int형을 동적할당받은 포인터변수라고 생각하고 있습니다.
delete q;를 하게되면, q가 가르키는 포인터변수p만 반납되는건가요? 아니면 포인터변수p랑 할당받은 int까지 같이 반납되는 건가요.?? 
뭐 어떻게 되어먹은건지 모르겠어서 누수가 발생하는지 아닌지조차 모르겠습니다ㅠㅠ 
(2)에서
메모리 누수가 발생한다고 생각합니다. 
아래와 같이 고쳐야
delete p;이 문장을 반복문 안에 넣어야지 메모리 누수가 발생하지 않는다고 생각하는데 맞나요?

아직 잘 모르는 부분이 많습니다.. 자세한 설명과 정답에 대한 해설도 함께 알려주시면 감사하겠습니다..!


#c++ 메모리 누수 체크 #c++ 메모리 누수 #c++ 메모리 구조 #c++ 메모리 관리 #c++ 메모리 해제 #c++ 메모리 사용량 확인 #c++ 메모리를 읽을 수 없음 #c++ 메모리 초과 #c++ 메모리 복사 #c++ 메모리 초기화

profile_image 익명 작성일 -

(1) q가 동적으로 할당받은 int를 가리키고 있어서, delete q는 동적으로 할당받은 int를 해제하게 됩니다.

포인터변수p와 q는 지역변수라서 함수 f가 리턴되면 자동 해제됩니다.

(2) for루프를 돌면서 5번 new int가 실행이 되기 때문에 동적 int 할당도 5번이 수행됩니다.

그래서 delete p를 for루프 안에 넣어야 5번 해제가 됩니다.

C++ 메모리 누수 방지

... 그런데 다른 언어들과 다르게 c++로 작성한 프로그램은 실행할때 마다 급속도로 프로그램 메모리가 쌓이면서 프로그램이 먹통 되면서 강제 종료 됩니다. 제가 알기로는...

(C++) 자료구조론 메모리 누수에...

... 그러나 교수님께서 이 예시는 코딩에는 문제가 없으나 메모리 누수가 발생한다고 하더라고요. Memory Leak (메모리 누수) 가 도대체 어느부분에서 발생한거죠...

장단점 메모리leak누수에 대한 이론적...

... ----------------------------------------------------------------------------------------- 메모리 누수는 책같은경우에는 int * ptr = (int*)malloc(10); 이런경우 free를 해주지 않아도 별로...

메모리 누수가 일어납니다 [c++]

... vc 2008 버젼을 쓰는 c++ 이용자입니다. STL 에 있는 map 을 쓰는데요. 제가 코딩을 잘못해서 그런지, 메모리가 엄청 누수네요. 해체하는...