본문 바로가기

c++

(5)
코드 최적화 in C++ C++ 코드 최적화는 실행 속도와 메모리 사용량을 줄이고 유지보수성을 향상시키는 중요한 과정입니다. 주요 최적화 기법을 살펴보겠습니다.컴파일러 최적화 활용-O2, -O3 등의 최적화 옵션 사용 (g++ -O2 mycode.cpp -o myprogram)-march=native 플래그로 CPU 아키텍처에 맞게 최적화데이터 구조 및 알고리즘 개선적절한 컨테이너 선택 (std::vector vs std::list)불필요한 복사 연산 제거 (std::move, std::swap)시간 복잡도 고려하여 최적의 알고리즘 사용메모리 최적화동적 할당 최소화 (std::vector::reserve() 사용)스마트 포인터 (std::unique_ptr, std::shared_ptr) 활용캐시 친화적인 데이터 구조 설계루프 ..
함수 호출 규약 in C++ C++에서 함수 호출 규약(Calling Convention)은 함수가 호출될 때 인수를 어떻게 전달하고, 반환값을 어떻게 처리하며, 스택을 누가 정리하는지를 정의하는 방식입니다. 주요 호출 규약은 다음과 같습니다.cdecl (C Declaration)기본적인 C/C++ 함수 호출 규약인수 전달: 스택 (오른쪽에서 왼쪽)반환값: EAX (32비트), RAX (64비트)스택 정리: 호출자(caller)가변 인자 지원: 가능 (printf 같은 함수에서 사용)MSVC에서 _cdecl, GCC에서 __attribute__((cdecl))로 지정int __cdecl add(int a, int b) { return a + b;}stdcall (Standard Call)Windows API에서 많이 사용인수 ..
C++14 주요 특징 C++14는 C++11을 기반으로 한 소규모 업그레이드 버전으로, 성능 개선과 문법 간소화에 중점을 둔 업데이트입니다. C++14의 주요 특징을 정리하면 다음과 같습니다.일반화된 람다 캡처 (Generalized Lambda Capture)C++11에서는 람다에서 변수를 캡처할 때 반드시 값을 직접 지정해야 했지만, C++14에서는 새로운 init-capture 기능을 도입하여 보다 유연한 변수 캡처가 가능해졌습니다.#include int main() { int x = 42; auto lambda = [y = x + 10]() { std::cout 장점: 람다 내부에서 새로운 변수를 생성할 수 있어 편리함.auto의 함수 반환 타입 유추 (Return Type Deduction)C++11에서는..
생성자 사용 시 주의사항 in C++ C++에서 생성자를 사용할 때 주의해야 할 사항들은 다음과 같습니다.기본 생성자(Default Constructor) 제공 여부 확인클래스에 생성자를 정의하지 않으면 컴파일러가 자동으로 기본 생성자를 제공하지만, 다른 생성자가 정의되어 있으면 기본 생성자는 자동으로 생성되지 않습니다.기본 생성자가 필요한 경우 명시적으로 정의해야 합니다.class MyClass {public: MyClass(int value) { } // 기본 생성자가 없음};MyClass obj; // 오류 발생! 기본 생성자가 없음 해결 방법class MyClass {public: MyClass() {} // 기본 생성자 명시적 정의 MyClass(int value) {}};멤버 변수 초기화 순서 확인멤버 변수는 선..
l-value, r-value in C++ C++에서 l-value(left value)와 r-value(right value)는 변수나 표현식이 메모리에서 차지하는 위치 및 이동 가능성에 따라 구분됩니다.l-value (좌측 값)메모리에 저장된 값으로, 식의 왼쪽과 오른쪽에서 모두 사용 가능변경 가능하며, 주소를 참조할 수 있음 (& 연산자로 주소를 얻을 수 있음)변수, 참조 변수, 배열 요소, 객체 등이 해당 int x = 10; // 'x'는 l-value (메모리에 저장됨)x = 20; // 좌항(l-value)인 'x'에 20을 할당 (가능)int &ref = x; // 참조 가능 (l-value reference) l-value 특징식의 왼쪽(할당 대상)과 오른쪽(값 제공)에서 모두 사용 가능참조(&)를 통해 l-value ..