C++ 초기화 함정: `=default`의 미묘한 차이

2025-05-15

이 글에서는 C++의 초기화 메커니즘에 대한 혼란스러운 부분을 다룹니다. 간단한 예시를 통해 `=default`의 위치가 구조체 멤버 변수 초기화에 큰 영향을 미치는 것을 보여줍니다. 선언부에 `=default`를 사용한 멤버 변수는 0으로 초기화되지만, 정의부에 `=default`를 사용한 경우 값이 정해지지 않아 읽으면 정의되지 않은 동작이 발생합니다. 이 글에서는 기본 초기화, 값 초기화, 0 초기화의 차이점을 자세히 설명하고, 잠재적인 버그와 보안 위험을 피하기 위해 변수를 명시적으로 초기화하는 중요성을 강조합니다.

더 보기
개발 초기화

나만의 Linux 디버거 만들기: 1부 - 시작하기

2025-04-25

이 글은 10부작 시리즈의 첫 번째 부분으로, 처음부터 Linux 프로그램 디버거를 만드는 방법을 알려줍니다. 디버거의 핵심 메커니즘을 배우고 실행 시작, 중지, 계속, 중단점 설정(메모리 주소, 소스 코드 줄, 함수 진입), 레지스터 및 메모리 읽기/쓰기, 단계별 실행 등의 기능을 구현합니다. 이 튜토리얼에서는 C/C++, Linenoise, libelfin을 사용하며 각 파트의 코드는 GitHub에서 확인할 수 있습니다. 이후 파트에서는 원격 디버깅, 공유 라이브러리 지원, 식 평가, 다중 스레드 디버깅 등의 고급 주제를 다룰 것입니다.

더 보기
개발