본문 바로가기
반응형

-----ETC-----295

[C++ 마스터] Day 10: 동적 메모리 할당 (new, delete) 동적 메모리 할당 (Dynamic Memory Allocation)동적 메모리 할당은 프로그램 실행 중에 메모리를 할당하는 방식입니다. C++에서는 new와 delete 연산자를 사용하여 동적 메모리를 할당하고 해제할 수 있습니다. 1. new 연산자new 연산자는 동적으로 메모리를 할당하고, 포인터를 반환합니다.int *p = new int; // 정수형 변수에 대한 메모리 할당*p = 10;cout  2. delete 연산자delete 연산자는 동적으로 할당된 메모리를 해제합니다.delete p; // 메모리 해제p = nullptr; // 포인터를 null로 설정하여 안전하게 만듦 3. 배열의 동적 메모리 할당배열의 경우, new 연산자를 사용하여 메모리를 동적으로 할당할 수 있습니다.int .. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 10: inline 함수와 매크로의 사용 inline 함수inline 함수는 함수 호출의 오버헤드를 줄이기 위해 컴파일러에게 함수의 코드를 호출 위치에 삽입하도록 요청하는 방법입니다. 이 방법은 특히 자주 호출되는 작은 함수에서 유용합니다. inline 함수의 사용법inline 키워드를 사용하여 함수를 선언합니다.inline int add(int a, int b) { return a + b;} 컴파일러는 inline 함수가 호출될 때마다 실제 함수 호출 대신 함수 본문을 호출 위치에 삽입합니다. 예제 코드#include inline int add(int a, int b) { return a + b;}int main() { int result = add(3, 4); std::cout  위 코드에서 add 함수는 inline .. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 10: 디자인 패턴 심화 - 전략 패턴 (Strategy Pattern) 전략 패턴 (Strategy Pattern)전략 패턴은 행위 패턴 중 하나로, 알고리즘을 각각의 클래스에 캡슐화하여, 클라이언트가 알고리즘을 독립적으로 변경할 수 있도록 합니다. 이를 통해 알고리즘의 변화가 클라이언트 코드에 영향을 미치지 않도록 합니다. 전략 패턴의 특징알고리즘 캡슐화: 알고리즘을 독립적인 클래스로 캡슐화하여 교체가 용이합니다.유연성 제공: 런타임에 알고리즘을 동적으로 변경할 수 있습니다.클래스 분리: 클라이언트 코드와 알고리즘 클래스를 분리하여 코드의 가독성과 유지보수성을 높입니다.전략 패턴의 구조Context: 전략을 사용하는 클래스Strategy: 알고리즘을 정의하는 인터페이스ConcreteStrategy: 구체적인 알고리즘을 구현하는 클래스전략 패턴 UML 다이어그램+------.. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조 심화] Day 6: 스플레이 트리 (Splay Tree) 스플레이 트리 (Splay Tree)스플레이 트리는 자가 조정 이진 탐색 트리입니다. 각 연산 후, 스플레이 연산을 통해 접근한 노드를 트리의 루트로 이동시킵니다. 이는 자주 접근하는 노드를 트리의 상위로 올려, 평균적으로 빠른 접근을 가능하게 합니다.스플레이 트리의 주요 특징자가 조정: 각 연산 후 접근한 노드를 루트로 이동시키는 스플레이 연산을 수행합니다.평균 시간 복잡도: (O(\log n)) (최악의 경우 시간 복잡도: (O(n)))회전 연산: 좌회전, 우회전, 좌-좌 회전, 우-우 회전, 좌-우 회전, 우-좌 회전을 포함한 회전 연산을 사용합니다.스플레이 트리의 기본 연산삽입 (Insert): 새로운 노드를 삽입하고 스플레이 연산을 수행합니다.삭제 (Delete): 특정 키를 가진 노드를 삭제하.. 2024. 8. 1.
[C++ 임베디드 시스템 프로그래밍 시리즈] Day 6: 인터럽트와 폴링 인터럽트와 폴링의 개요임베디드 시스템에서는 외부 이벤트를 처리하기 위해 인터럽트와 폴링을 사용합니다. 두 기법은 이벤트를 감지하고 처리하는 방법에서 차이가 있습니다.1. 폴링 (Polling)폴링은 주기적으로 특정 조건을 검사하여 이벤트를 감지하는 방법입니다. 루프를 통해 상태를 지속적으로 확인하며, 특정 조건이 만족되면 해당 작업을 수행합니다. 폴링의 장점구현이 간단합니다.모든 입력을 검사할 수 있습니다.폴링의 단점CPU 자원을 많이 소모합니다.반응 시간이 늦을 수 있습니다.예제: 버튼 상태를 폴링하여 LED 제어const int buttonPin = 2; // 버튼 핀const int ledPin = 13; // 내장 LED 핀void setup() { pinMode(buttonPin, IN.. 2024. 8. 1.
[C++ 게임 개발 시리즈] Day 6: 첫 번째 게임 프로젝트: 간단한 2D 게임 만들기 (3) 점수 시스템과 여러 적 추가이번 단계에서는 점수 시스템을 추가하고, 여러 적이 등장하도록 구현하겠습니다. 이를 통해 게임이 좀 더 도전적이고 흥미로워질 것입니다.점수 시스템 추가점수 변수 정의:main.cpp 파일에 점수 변수를 정의합니다.int score = 0;sf::Font font;sf::Text scoreText;폰트 로드 및 점수 텍스트 설정:폰트를 로드하고, 점수를 표시할 텍스트를 설정합니다.// 메인 함수 내부에 추가 (창 생성 아래)if (!font.loadFromFile("arial.ttf")) { std::cerr 점수 업데이트 및 표시:게임 루프 내에서 점수를 업데이트하고, 화면에 표시합니다.// 메인 함수의 게임 루프 내에 추가 (충돌 처리 아래)score++;scoreTex.. 2024. 8. 1.
[C++ 마스터] Day 7: 함수와 재귀 함수 (Functions)함수는 특정 작업을 수행하는 코드 블록입니다. 함수를 사용하면 코드의 재사용성을 높이고, 프로그램을 더 구조화된 방식으로 작성할 수 있습니다. 1. 함수 선언과 정의함수를 사용하려면 먼저 함수를 선언하고, 정의해야 합니다. 함수 선언:함수의 이름, 매개변수, 반환 타입을 컴파일러에게 알려줍니다.int add(int a, int b); // 함수 선언 함수 정의:함수가 실제로 수행할 작업을 작성합니다.int add(int a, int b) { // 함수 정의 return a + b;} 함수 호출:함수를 호출하여 실행합니다.int result = add(3, 4); // 함수 호출cout  2. 함수의 반환 타입함수는 작업을 수행한 후 값을 반환할 수 있습니다. 반환 타입.. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 7: R-값 참조와 이동 시멘틱 R-값 참조 (Rvalue References)R-값 참조는 C++11에서 도입된 기능으로, 임시 객체나 이동할 수 있는 리소스를 참조하는 데 사용됩니다. R-값 참조를 사용하면 불필요한 복사 연산을 줄이고, 성능을 최적화할 수 있습니다. R-값 참조의 기본 사용법R-값 참조는 && 연산자를 사용하여 정의됩니다.#include void printValue(int& x) { std::cout  이 예제에서 printValue 함수는 L-값 참조와 R-값 참조를 모두 처리할 수 있습니다. a는 L-값으로, 20과 a + 30은 R-값으로 전달됩니다.이동 시멘틱 (Move Semantics)이동 시멘틱은 R-값 참조를 활용하여 객체의 소유권을 이전하는 방법입니다. 이를 통해 불필요한 복사 연산을 피하고,.. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 7: 데이터 로컬리티와 캐시 친화적 코딩 데이터 로컬리티의 중요성데이터 로컬리티는 CPU가 데이터를 더 빠르게 접근할 수 있도록 메모리를 배치하는 방식을 의미합니다. 데이터 로컬리티가 좋으면 캐시 히트율이 높아져 프로그램의 성능이 향상됩니다. 데이터 로컬리티는 시간적 로컬리티와 공간적 로컬리티로 나눌 수 있습니다.시간적 로컬리티 (Temporal Locality): 최근에 접근한 데이터에 다시 접근하는 경향.공간적 로컬리티 (Spatial Locality): 가까운 메모리 주소에 있는 데이터에 접근하는 경향. 캐시 친화적 코딩 기법1. 연속된 메모리 할당연속된 메모리 할당은 배열이나 벡터와 같은 연속된 데이터 구조를 사용하는 것입니다. 이는 공간적 로컬리티를 향상시킵니다. 예제 코드#include #include int main() { c.. 2024. 8. 1.
반응형