42 Seoul

[42Seoul/leaks 사용] leak 왜 터지는지 아직도 몰라?

jaewpark 2022. 4. 4. 17:10

네.. 아직까지 몰랐던 건 저였고요...

과제가 터졌습니다.

C과제를 하다보면 왠만해서는 leak 체크를 하라고 나와있습니다.

그 이유에 대해서 잠깐 설명을 하자면 어떠한 작업을 할 때, 동적 할당으로 사용된 메모리가 제대로 해제가 되지 않고 계속 새고 있고 그게 계속 쌓인다면, 쓸데없는 곳에서 자꾸 불필요하게 쓰임이 생겨서 문제가 발생이 됩니다.

malloc 을 사용 하는 과정에서는 주소값에 대해서 제대로 사용이 되어야 함을 인지 하면서 코드를 짜야 됩니다.

사실 다른 블로그에서 이미 다 이유가 있을테니, 과제를 하는 중에 내가 잘못된 게 있는지 확인을 하려면

 

1. main 문에 해당 하는 곳에서 return 바로 직전에 반복문을 아래와 같이 설정

반복이 무한이 되도록 설정

 

2. 코드를 실행하되, 터미널을 이용할 수 있게끔 하는 &

명령어 끝에 &를 입력

 

3. Process status 에서 PID 를 확인 하는 ps

2번에서 잘 되고 있는 지 확인

PID : Process ID로  유닉스, 맥 OS X 또는 마이크로소프트 윈도우 등의 운영 체제 커널이 사용되는 번호

 

4. leaks PID

leak이 뜨지 않은 상황
leak 있는 상황

 

5. 반복문을 죽여버리자 kill

 

kill PID

 

이러한 방법으로 leaks 체크를 하면 된다.

그럼 씬나게 과제를 터트리러 가보자!!