본문 바로가기

<CPP>/BASIC23

14. 할당, 해제 C와 CPP를 사용하는 또 다른 이유인 동적 할당을 정리한다. 동적 할당은 양날의 검으로 숙련자가 사용하면 극한의 최적화를 구현할 수 있는 반면 반대의 경우는 극한의 발적화를 이룰 수 있다. 어찌 되었던 극한이란 타이틀을 얻을 수 있는 점에서 가치는 있다.(?) 동적 할당을 이해하기 위해서는 먼저 메모리 저장 공간을 이해해야 한다. 메모리 저장 공간 ▼ 메모리 저장 공간 예시 코드 #include #include // ++ Data 영역 ++ const static int gData = 1; int main() { // ++ Stack 영역 ++ int lData = 2; // ++ Heap 영역 ++ // C WAY int* dDataWithC = static_cast(malloc(sizeof(int).. 2021. 1. 15.
13. 포인터(Pointer) 다른 것들도 마찬가지지만 포인터는 특히 자주 수정될 예정이다. 구름 속에서 손을 젓는 기분으로 사용하고 있는데 이상하게 코드는 작동한다.. 변수 주소를 저장하는 변수 CPP이 게임 개발에서 아직도 현역인 이유는 바로 이 포인터 때문일 것이다. C부터 이어진 포인터의 개념 자체는 대단히 짧고 명료한데 단지 변수 주소를 저장할 뿐이다. 그 이상의 기능도 그 이하의 기능도 존재하지 않는다. 문제는 이 기능을 응용하는 경우의 수가 엄청 많고 거의 대부분의 다른 기능들과 융합할 수 있다. 조금은 복잡해 보이는 아래의 코드를 살펴보자. ▼ 포인터의 기본적인 예시 int iValue = 10; wprintf(L"== iValue 값 ==\n"); wprintf(L" iValue[%p] = %d\n\n", &iValu.. 2021. 1. 14.
12. 열거형(Enum) 무조건 연속적으로 정의하는 열거형 ▼ enum 예시 enum class CharacterState { IDLE = 0, WALK, RUN, JUMP, ATTACK }; CPP에는 열거형에는 Enum과 Enum Class 가 있다. Enum Class는 CPP 11에서 추가된 기능으로 Enum의 기능에서 namespace의 기능을 더한 것이라고 한다. 즉 enum들끼리 보다 정확하게 구분 짓는데 도움을 줍니다. 정확한 예시를 위해 아래의 코드를 살펴보자. ▼ 기존 enum의 namespace 문제 enum RAINBOW_COLOR{ RED, ORANGE, YELLLOW, GREEN, BLUE, INDIGO, PURPLE }; enum COLOR{ RED }; int main() { int color = R.. 2021. 1. 14.
11. 고정 크기 배열(Array) 가로로 늘여놓다, 배열 ▼ CPP에서 배열 코드 #include #include int main() { std::array arr = {0, 1, 2, 3, 4}; for (int i = 0; i < arr.size(); i++) { printf("ARR[%d] = %d\n", i, arr[i]); } return (0); } C에서 사용하는 내장 고정 배열도 CPP에서 사용할 수 있지만 권장 사항은 아니다. CPP 11 이후에서는 표준 라이브러리에 포함된 의 std::array를 사용하기를 권장한다. 기존의 내장 고정 배열과 비교해서 메모리를 덜 먹으며 함수에 전달될 때 포인터로 형 변환되지 않는다는 장점이 있다. 고정 크기 배열 선언 ▼ std::array의 선언 방법은 크게 다르지 않다. #incl.. 2021. 1. 13.