본문 바로가기

study/C++

[IT/리뷰] 아무도 알려주지 않은 C++ 코딩의 기술

728x90

아무도 알려주지 않은 C++ 코딩의 기술 : 네이버 도서 (naver.com)

 

아무도 알려주지 않은 C++ 코딩의 기술 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

멘토님이 책을 쓰셔서 구매 후 읽게 되었다. 처음에 생각보다 두껍다 느껴졌는데 내용이 어렵지 않고, 그림과 예제 코드가 중간에 많아 금방 읽게 되었다.

 

책은 C++의 기본이 되는 기술들로 윈도우에서의 환경 구축과 공통 헤더에서부터 CMake, 라이브러리, 메모리 영역, 포매터, 패키타이저까지 넓은 범위에 걸쳐 핵심 내용들을 포함하고 있다. 윈도우 개발자들은 환경과 관련된 부분에서 많은 도움을 받을 수 있을 것 같고, 메모리, 포매터, 패키타이저와 같은 내용들은 C++ 개발자 누구에게나 도움이 될만하다.

 

책에는 기본적이면서도 핵심적인 내용들을 다룬다. 이제 막 C++을 시작했을 때 멘토님을 만났었는데 그때 배웠던 내용들도 있어 반가웠다. 지금까지 현업에서 시간을 보내면서 경험들을 쌓게 되었는데도 책을 읽으면서 신기하고 깨달은 부분도 있었다. 그리고 한 번 더 아키텍트로서 대단하다고 느낄 수 있었다. 포매터와 패키타이저에서 간단한 예제만으로 인터페이스를 이용해 좋은 구조를 보였다고 느꼈다. 현업에서 생각보다 이렇게 구조를 짜는 사람을 잘 없었다.

 

책을 읽으면서 가장 신기하면서 놀랐던 부분은 메모리 영역이었다. 그동안 스택에 큰 메모리를 차지하는 것은 많은 문제를 경험하고 나서 자연스럽게 지양하고, new를 통해 힙에 자원을 할당하고 있었다. 그런데 전역과 정적 변수를 이용한 할당 방법을 제시하면서, 서버 개발을 할 때 new를 사용하지 않는다는 점이 큰 충격이었다.

책에서 제시한 해결 방안은 링버퍼였다. 멘토님께서 예전에도 사용하셨던 방법이다. 물론 링버퍼만으로 C++의 메모리 관리를 모두 해결할 수는 없을 것 같다. new 없이 링버퍼를 사용한다는 점은 메모리도 차지하고 있을 것이고, 큐이기 때문에 FIFO가 되어야 할 것이기 때문이다.

최근 회사에서 모듈 하나를 담당하도록 전달받았는데 받자마자 메모리 누수 이슈가 발생했다. 모듈을 세세히 파악하지도 못하고 메모리 때문에 고생하는 중이다. 우선 어찌저찌 최대한 잡으려 했는데 아직 완벽히 해결됐는지도 확인이 안 되는 상황이다. new 없이는 현재는 불가능할 것 같고 최대한 shared_ptr을 사용해야 할 것으로 보이는데 당장에는 shared_ptr도 바로 적용하기는 어려운 상황이다.

그러다 보니 책에서 제시하는 메모리 관리법들이 공감되는 부분도 있었고, 해결 방안에 대해 생각해볼 것들도 있었다.

 

책이 전반적으로 도움이 됐다. 내용들을 정리하려고 표시해뒀는데 따로 요약은 하지 않을 계획이다.

 

멘토님께서 TDD도 항상 사용하시는 것으로 아는데, TDD와 관련돼서 gtest와 CMake를 이용한 프로젝트 예제도 책으로 하나 내주셨으면 좋겠다. ㅎㅎ

728x90