학부 시스템 프로그래밍 수업, C++ 메모리 누수 디버깅 경험
학부 시스템 프로그래밍 수업에서 C++로 네트워크 통신 모듈을 작성하다 메모리 해제가 누락되어 프로그램이 점점 느려지는 문제를 만났습니다. 처음엔 코드를 눈으로 훑다가 찾기 어려워서, Valgrind로 메모리 접근 오류와 누수 위치를 추적했습니다. 포인터를 함수 간에 넘길 때 소유권이 불명확해서 같은 메모리를 두 곳에서 해제하는 문제도 발견됐습니다.
스마트 포인터로 교체하면서 소유권을 명확하게 만드니 같은 종류의 오류가 재발하지 않았습니다. Python은 GC가 있어서 이런 문제가 없지만, GC 비용이 예측 불가능한 레이턴시로 이어지는 다른 문제가 있다는 것도 배웠습니다. 이후 저는 C++ 코드를 쓸 때 소유권 명시를 먼저 설계하는 습관이 생겼습니다.
자원 관리 규칙을 코딩 전에 정하는 것이 디버깅 시간을 줄인다는 걸 그때 배웠습니다.