Programming II/C++24 [전문가를 위한 C++] CHAPTER7 메모리 관리 - C++는 언어 자체가 굉장히 유연하고 안전성보다는 성능을 추구하기 때문에 심각한 문제가 발생할 가능성도 높다. - 메모리 할당과 관리는 C++ 프로그래밍에서 특히 문제가 발생하기 쉬운 영역이다. 따라서 메모리 관리의 내부 작동 방식을 확실히 이해하고 있어야 한다.- 모던 C++코드에서는 로우레벨 메모리 연산은 가급적 피하고 컨테이너나 스마트 포인터와 같은 최신 기능을 활용하는 추세다 7.1 동적 메모리 다루기7.1.1 메모리의 작동 과정 살펴보기int i { 7 };- 로컬 변수 i를 자동 변수라고 부르며 스택에 저장된다. - 프로그램의 실행 흐름이 이 변수가 선언된 스코프(유효 범위)를 벗어나면 할당된 메모리가 자동으로 해제된다. - new 키워드를 사용하면 프리스토어(자유 공간)에 메모.. 2025. 4. 5. [전문가를 위한 C++] CHAPTER6 재사용을 고려한 설계 6.1 재사용 철학- 코드는 반드시 작성자나 다른 프로그래머가 재사용할 수 있게 설계해야 한다.작성은 한 번, 사용은 여러 번무슨 수를 쓰더라도 코드 중복은 피한다.같은 일을 반복하지 않는다(DRY - Don't Repeat Yourself).- 이에 대한 근거는 다음과 같다.코드를 한 프로그램에서만 사용하는 경우는 극히 드물다.재사용할 수 있게 설계하면 시간과 비용을 절약할 수 있다.팀 내 다른 프로그래머도 활용할 수 있도록 작성한다. 재사용을 고려한 설계를 협력 코딩이라고도 부른다.재사용성이 낮으면 코드 중복이 늘어난다.재사용하기 좋은 코드의 첫 번째 수혜자는 바로 작성자 자신이다.- 회사 소속으로 설계하고 작성한 코드의 지적재산권은 일반적으로 회사에 귀속된다. 퇴직 후에도 그 코드를 계속 보유하면 .. 2025. 4. 5. [전문가를 위한 C++] CHAPTER5 객체지향 설계 5.1 절차형 사고방식- C와 같은 절차형 언어는 단 하나의 작업만 담당하는 프로시저라 부르는 작은 단위로 코드를 구성한다. - 프로시저는 프로그래머가 코드를 읽고 관리하기 쉽도록 추상화한 것이다. 프로시저는 프로그램이 하는 일을 중심으로 만든 개념이다.- 절차형 접근 방식은 일정한 단계에 따라 진행하는 프로그램에 적합하다. - 절차지향 프로그래밍(Procedural Programming)은 프로그램을 순차적인 절차(절차, 함수, 루틴)로 구성하여 실행하는 프로그래밍 패러다임이다. 프로그램의 흐름이 위에서 아래로 자연스럽게 진행되며, 데이터를 함수(절차)들이 처리하는 방식으로 동작한다.5.2 객체지향 철학- 절차형 접근 방식은 프로그램이 하는 일을 중심으로 접근하는데 반해 객체지향 접근 방식은 모델링.. 2025. 4. 2. [전문가를 위한 C++] CHAPTER4 전문가답게 C++프로그램 설계하기 4.1 프로그램 설계의 정의- 프로젝트를 새로 시작하거나 기존 프로그램에 기능을 추가하는 작업에 들어가기 전에 가장 먼저 할 일은 요구사항을 분석하는 것이다. 그러기 위해서는 이해 당사자와 함께 논의해야 한다. - 요구사항 분석 단계의 핵심 결과물은 기능 요구사항 문서다. 이 문서는 작성할 코드가 정확히 할 일만 표현하고, 이를 달성하는 방법은 생략한다. 또한 이 단계에서 최종 시스템의 동작이 아닌 속성을 표현하는 비기능 요구사항 문서도 나올 수 있다. - 요구사항을 모두 수집했다면 프로그램 설계 단계로 넘어갈 수 있다. 프로그램 설계(또는 소프트웨어 설계)란 앞 단계에서 도출한 (기능 및 비기능) 요구사항을 모두 만족하는 프로그램을 구현하기 위한 명세서다. 쉽게말해 설계란 프로그램의 구현 계획을 정.. 2025. 4. 2. [전문가를 위한 C++] CHAPTER3 코딩 스타일 3.1 코딩 스타일의 중요성3.1.1 가늠해보기3.1.2 바람직한 스타일의 기준- 바람직한 코드 작성 스타일의 정확히 제시하기는 쉽지 않다. 시간이 갈수록 자신만의 선호하는 스타일이 생기고, 다른 사람이 작성한 코드를 보다가 좋은 스타일을 발견할 때도 있기 때문이다. - 잘 작성된 코드에서 볼 수 있는 공통적인 속성을 다음과 같이 골라낼 수 있다.문서화코드 분해명명 규칙언어 사용코드 서식(포매팅)3.2 코드 문서화- 프로그래밍에서 말하는 문서화란 주로 소스 파일에 주석을 다는 것을 의미한다.3.2.1 주석을 작성하는 이유- 주석을 작성해야 하는 여러가지 이유를 알아보자.+ 사용법을 알려주는 주석 - 함수가 던지는 익셉션, 매개변수, 리턴 타입 등에 대한 설명을 명시해줄 수 있다.- 회사의 코딩 가이드.. 2025. 3. 30. [전문가를 위한 C++] CHAPTER2 스트링과 스트링 뷰 다루기 - C언어를 사용하던 시절에는 단순히 널로 끝나는 문자 배열로 스트링을 표현했다. 하지만 이렇게 하면 버퍼 오버플로를 비롯한 다양한 문제 때문에 보안 취약점이 드러날 수 있다. - C++ 표준 라이브러리는 이러한 문제를 방지하기 위해 보다 안전하고 사용하기 쉬운 std::string 클래스를 제공한다.2.1 동적 스트링 172- 스트링을 주요 객체로 제공하는 프로그래밍 언어를 보면 대체로 스트링의 크기를 임의로 확장하거나, 서브스트링(부분 문자열)을 추출하거나 교체하는 것과 같은 고급 기능을 제공한다.- 반면 C와 같은 언어는 스트링을 부가 기능처럼 취급한다. 그러므로 스트링을 언어의 정식 데이터 타입으로 제공하지 않고, 단순히 고정된 크기의 바이트 배열로 처리했다. - C언어의 스트링 라이브러리는.. 2025. 3. 30. 이전 1 2 3 4 다음