본문 바로가기

c++60

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.
2. 삼각형 그리기 (1) 배경을 그릴 수 있게 되었으니 이제 아주 간단한 삼각형을 그려볼 차례다. 미리 말하지만 쉽지 않고 하드코딩으로 되어있다. 코드 정리는 모든 코드가 완성되고 난 뒤에 코드 리뷰를 진행하면서 할 예정이다. ▼ //----와 //----로 묶인 영역들이 오늘 우리가 할 작업이다. // GLEW의 모든 기능 활성화 glewExperimental = GL_TRUE; if (glewInit() != GLEW_OK) { wprintf(L"GLEW 초기화가 실패했습니다.\n"); // mainWindow 삭제 glfwDestroyWindow(mainWindow); glfwTerminate(); return (1); } //--------------------------------------------- // 위치 1).. 2021. 1. 14.
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.