C / C++ CS 지식백과

C / C++ 관련 핵심 개념을 개발자 기술 면접에서 설명할 수 있도록 문서 8편으로 정리했습니다. 각 문서는 개념, 동작 원리, 시간 복잡도와 실무 선택 기준을 함께 다룹니다.

최종 업데이트 2026.09.17
  1. C 언어 컴파일 과정 (Compile Process)

    C 소스 코드가 전처리, 컴파일, 어셈블, 링킹 네 단계를 거쳐 실행 파일이 되는 과정을 단계별 산출물, 목적 파일의 섹션 구조, 정적 링킹과 동적 링킹의 차이와 함께 정리한다.

  2. C 동적 할당 (malloc, free)

    실행 중에 힙 메모리를 확보하고 반납하는 C의 동적 할당을 malloc, calloc, realloc, free의 동작과 할당기의 내부 구조, 메모리 누수와 댕글링 포인터 같은 대표 오류 중심으로 설명한다.

  3. 포인터 (Pointer)

    다른 변수의 메모리 주소를 저장하는 포인터의 개념과 역참조, 포인터 산술, 배열과의 관계, 이중 포인터와 함수 포인터, 그리고 널 포인터와 댕글링 포인터 같은 오류 상황까지 정리한다.

  4. 구조체 메모리 크기와 정렬, 패딩 (Struct Alignment)

    구조체 크기가 멤버 합보다 커지는 이유인 메모리 정렬과 패딩의 규칙을 오프셋 계산 예시로 설명하고, 멤버 순서에 따른 크기 차이와 #pragma pack 사용 시 주의점을 다룬다.

  5. C++ 입출력 성능 최적화 (I/O Optimization)

    cin과 cout이 기본 설정에서 느린 이유를 stdio 동기화와 버퍼 플러시로 설명하고, sync_with_stdio(false), cin.tie(NULL), endl 대신 개행 문자를 쓰는 세 가지 최적화와 주의점을 정리한다.

  6. 얕은 복사와 깊은 복사 (Shallow Copy, Deep Copy)

    주소만 복사하는 얕은 복사와 힙 데이터까지 복제하는 깊은 복사의 차이, 이중 해제 문제와 복사 생성자 구현, 3의 법칙과 5의 법칙, 이동 의미론과 스마트 포인터 기반 해법을 다룬다.

  7. C++ 벡터 컨테이너 (std::vector)

    연속 메모리 기반 동적 배열인 std::vector의 size와 capacity, 재할당과 분할 상환 O(1) push_back, 반복자 무효화, reserve와 emplace_back 활용법을 정리한다.

  8. 가상 함수 (Virtual Function)

    부모 포인터로 자식 객체의 함수를 호출하는 다형성을 vtable과 vptr 구조로 설명하고, 가상 소멸자가 필수인 이유, 순수 가상 함수와 추상 클래스, override 키워드까지 다룬다.

C / C++를 특히 많이 묻는 직군

같은 개념이라도 직군에 따라 파고드는 각도가 다릅니다. 직군별 가이드에서 어떤 질문으로 이어지는지 확인해 보세요.

다른 CS 토픽도 이어서 보기

한 주제의 원리를 익혔다면 인접한 자료구조와 운영체제, 네트워크 개념을 함께 읽어 전체 동작을 연결해 보세요.

CS 지식백과 전체 보기