[기술 질문] #6_동적 할당 C++의 동적 할당에 대해 알아보겠습니다. Overview 개념 malloc, free new, delete virtualalloc, virtualfree #1 개념 [Basic C++] #57_동적 메모리 [Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴 webddevys.tistory.com [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 C++ 개발 중 객체 생성, 복제, 그리고 대입 과정에서 발생하는, ..
[기술 질문] #5_struct, 구조체 C++의 구조체에 대해 알아보겠습니다. Overview 개념 배열과 구조체 공용체 패딩 #1 개념 1. 구조체? struct MyStruct { int IntVal; float FloatVal; long LongVal; string Str; }; 구조체는 논리적으로 관련이 있는 항목들을 하나의 자료형으로 묶기 위해 사용됩니다. 객체의 데이터 멤버처럼, 구조체의 각 멤버들은 "."를 통해 접근이 가능하며, 포인터를 활용할 수도 있습니다. 2. 주의할 점? 구조체 변수 사이에 비교 연산자를 사용할 수 없습니다. 구조체 자신의 멤버로 구조체 자신을 사용할 수 없습니다. 구조체 선언에서 멤버 변수를 초기화할 수 없습니다. 3. 코드 #include using namesp..
[기술 질문] #4_#define, 매크로 C++의 "#define" 키워드에 대해 알아보겠습니다. Overview 개념 코드 개념 1. #define #define PI 3.14 Details #define으로 정의된 기호 상수 등은 전처리기가 확장 문자열로 변환합니다. #(전처리 지시자) + define(정의하다) 주의할 점은 ";"을 붙이면 함께 치환되어 문제가 발생할 수 있습니다. 숫자 상수로 대체된 소스코드는 컴파일 에러 발생 시 찾기 어렵습니다. 유지보수에 문제가 발생합니다! 결과적으로, #define 보다 const를 활용하는 것이 더 효율적입니다. 2. 매크로 함수 #define Add(a,b) (a + b) #define PLUS(a,b) a+b Details 일반 함수 호출은 함수가 위..
[기술 질문] #3_const 키워드 C++의 "const" 키워드에 대해 알아보겠습니다. Overview const 변수 const 데이터 멤버 const 멤버 함수 const 변수 1. const 변수 const float SomeFloat = 3.5; const std::string SomeStr = "Hello World"; Details const 키워드는 절대 변하지 않는 상수 값을 정의하기 위해 이용합니다. const 키워드는 선언문의 가장 앞에 붙여 활용합니다. 정리하자면, const 키워드로 선언된 변수는 컴파일러에 의해 그 값이 바뀌지 않도록 보증됩니다. 예외적으로, const_cast를 통해 상수성 제거가 가능한 경우도 있습니다. 2. const 포인터 // #1 첫 번째 목적 : 포..
[기술 질문] #2_auto 키워드, extern 키워드 C++의 "auto" 키워드와 "extern" 키워드에 대해 알아보겠습니다. Overview 개념 코드 개념 1. auto 키워드(자동 타입 추론) C++11부터 제공하는 auto 키워드는 변수의 유형을 컴파일러가 자동으로 추론하도록 하는 기능을 제공합니다. 지역 변수와 동일하게 함수 블록 내부에서 선언되며, 블록의 종료와 함께 소멸됩니다. 메모리 구조의 "스택"에 메모리 할당을 받습니다. 2. extern 키워드(외부 변수) 전역 변수와 동일하게 함수 블럭 밖에서 선언되며, 프로그램의 종료와 함께 소멸됩니다. 메모리 구조의 "정적 데이터(Data) 영역"에 메모리 할당을 받습니다. 외부 파일에서 선언한 전역 변수를 참조할 때 사용됩니다. 주의할 ..
[기술 질문] #1_변수 종류 C++의 "변수"에 대해 알아보겠습니다. Overview 메모리 구조 변수 종류 지역-Stack, 동적-Heap 함수 인자를 통해 함수로 값을 넘겨주는 방식 메모리 구조 1. 메모리 구조 [Basic C++] #57_동적 메모리 [Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴 webddevys.tistory.com Details 코드 영역 : 컴파일된 프로그램이 저장되는 영역 데이터 영역 : Global 변수 + Static 변수가 저장되는 영역 힙 영역 : 동적 할당된 변수를 저장하는 영역 (런타..
[Unreal_C++_DarkSoul]#12_Targeting 회전 속도 Player의 Targeting 동작 수행 시 발생하는 부자연스러운 회전 속도 문제를 해결합니다. Unreal 포트폴리오 작업 과정을 기록합니다. Overview 문제 해결 결과 화면 문제 Player의 Targeting 동작 수행 과정에서 발생하는 부자연스러운 회전 동작 Player의 Targeting 동작으로 인해 부자연스러운 연출이 불가피합니다. 문제 해결 [Unreal_C++_DarkSoul]#6_기능 구현, Targeting 기능 [Unreal_C++_DarkSoul]#6_Targeting 기능 Player 근방의 적들을 인지하고, 선택된 적 객체를 Focusing 하는 기능을 구현합니다. 포트폴리오 진행 사항을 기록하기 ..
[Unreal_C++_DarkSoul]#11_Parkour(Vaulting) 장애물을 비교적 수월하게 극복하기 위해 Parkour 동작을 구현합니다. Unreal 포트폴리오 작업 과정을 기록합니다. Overview 개요 설계 상세 내용 게임 플레이 화면 개요 1. 목적 Player가 장애물을 보다 자연스럽게 넘어갈 수 있도록 합니다. Player가 기본 동작만으로 극복할 수 없는 장애물들을 키 입력 하나로 보다 수월하게 극복할 수 있도록 합니다. Player의 게임 플레이 과정에서 찾을 수 있는 재미 요소(?)를 추가하기 위함입니다. 2. 개요 먼저, First Person Character를 기준으로 세 가지 Line Tracing을 수행합니다. 세 가지 Line Tracing을 통해 장애물과 FPC과..
[Unreal_C++_DarkSoul]#10_AIController AI의 행동 방식을 정의하는 과정에서 발생한 문제를 해결합니다. Unreal 포트폴리오 작업 과정을 기록합니다. Overview 문제 해결 문제 1. AIController::Tick() void AAIC_CastleKnight::Tick(float DeltaSeconds) { Super::Tick(DeltaSeconds); SetFocus(PlayerPawn); MoveToActor(PlayerPawn, 100.f); if (UKismetMathLibrary::Distance2D(FVector2D(GetPawn()->GetActorLocation()), FVector2D(PlayerPawn->GetActorLocation())) < 2..
[자료구조]#2_이중 연결 리스트(Double Linked List) 선형 자료 구조 중 "이중 연결 리스트"에 대해 알아보겠습니다. Overview 이중 연결 리스트 삽입, 제거 알고리즘 이중 연결 리스트 1. 개념 typedef struct Node[ Data data; Node* prevLink; Node* nextLink; } Node; 연결 리스트의 노드는 "데이터 필드" + "다음 노드를 가리키는 링크(포인터)"로 이루어져 있습니다. 이중 연결 리스트는 다음 노드뿐만 아니라, 이전 노드를 가리키는 링크 또한 가집니다. 보통의 연결 리스트가 갖는 "단방향 탐색"에 대한 단점을 보완하기 위함입니다. 삽입, 제거 알고리즘 1. 삽입 알고리즘 1. 비어있는 연결리스트에 새로운 노드 삽입 #1 head..