목록C++ (6)
신입 게임 개발자의 프로그래밍 일기
[C++ 입문자에서 벗어나기]Chapter_4: 메모리(Memory)#2 2018년에 작성하는 첫 포스팅입니다.이번 포스팅에서는 new와 관련된 활용에 대해 이야기해보겠습니다.먼저 new의 Syntax를 살펴봅시다! void* operator new(std::size_t count) throw(bad_alloc); void* operator new(std::size_t count, const std::nothrow_t&) throw(); void* operator new(std::size_t count, void* ptr) throw(); 맨 처음 new는 일반적으로 가장 많이 사용하는 new의 형태입니다.두번째 new는 책(C++기초 플러스 5판, Effective C++ 3판)에서위치 지정 new라고..
[C++ 입문자에서 벗어나기]Chapter_2: 선언과 정의#3 이번 포스팅은 선언에 대해서 이야기해보겠습니다.선언은 "어떤 객체가 있음을 알림"이라고 선언과 정의#1 포스팅에서 말한 적이 있습니다.이제 왜 그런지를 설명해드리겠습니다. [빌드: 링커 단계] 빌드는 소스 파일(.cpp)들이 실행 바이너리(.exe, .so ...) 가공되는 과정이라고 생각하시면 됩니다.왜 갑자기 빌드에 대한 이야기를 꺼냈느냐하면...선언에 대해서 이야기할 때 빌드의 3단계들 중 링크 단계를 함께 설명하는 것이 보다 이해하기 용이하다고 판단해서입니다.링크 단계는 빌드의 3단계 중 최종 단계로 컴파일(빌드 2단계)의 결과물들인 오브젝트 파일(.o)들을 적절히 연결해서 빌드의 최종 결과물인 실행 바이너리를 만들어내는 단계입니다...
[C++ 입문자에서 벗어나기]Chapter_2: 선언과 정의#2 이번 포스팅에서는 "초기화된 전역 변수와 초기화되지 않은 전역 변수"에 대해서 다뤄볼 생각입니다. [초기화된 전역 변수와 초기화되지 않은 전역 변수] 아래의 코드를 봐주시길 바랍니다. 전역 변수 형태로 총 4개의 변수들이 정의되어 있습니다.우리는 이미 이전 포스팅에서 전역 변수가 자동 초기화가됨을 알고 있습니다.위 코드를 실행 시키면 0057이라는 출력값이 나오게 된다는 것은 쉽게 알 수 있겠죠. 그런데 위 전역 변수들은 C++의 어느 가상 메모리 영역에 위치하게 될까요? g_C는 확실하게 Data영역에 위치할 것 같습니다.5라는 상수로 변수를 초기화하는 정의문을 가지고 있으니까요 그렇다면 나머지 3개는 어떨까요?먼저, g_A에 대해 이야기..
[C++ 입문자에서 벗어나기]Chapter_2: 선언과 정의#1 이전 포스팅까지는 Chapter_1: 타입(Type)에 대해 이야기했었는데 이번 포스팅부터는 선언과 정의에 대해 이야기해보려고합니다.개인적으로는 선언과 정의에 대해 무시하면서 IDE(통합개발환경, Integrated Development Environment)의 편리함에기대어 코딩을 해왔었는데 "Fundamental C++ 프로그래밍 원리"에 선언과 정의 부를 읽으며 여러 생각을 하게 되었습니다. [선언과 정의] 저는 일반적으로 선언과 정의에 대해 이야기해보라 하면 아래와 같이 이야기했을 겁니다. 선언: 어떤 객체가 있음을 알림정의: 어떤 객체를 위한 메모리 영역을 확보 정의는 객체를 이용하기 위해서 필수적인 절차이지만선언이 왜 따로 구분이..
[C++ 입문자에서 벗어나기]Chapter_1: 타입(Type)#3 이번 포스팅에서는 문자와 문자열 그리고 typedef 사용법에 대해서 이야기해 볼 것입니다. 더불어 참조타입에 대해서도 이야기하겠지만 간단히 언급만하고 넘어가겠습니다. 참조타입은 추후에 자세히 이야기하겠습니다. [문자 타입] C/C++에서 기본적으로 문자들을 표현하기 위해서 char 타입을 사용해왔습니다. 이 char 타입은 ASCII 인코딩 방식을 사용하여 문자들을 비트 상태들과 대응시키는데 우선, ASCII에 대해서 간단히 살펴봅시다. [ASCII & 멀티바이트 문자 집합(MBCS)] ASCII는 영문 알파벳을 디지털화시키기 위해 사용되는 대표적인 7비트 문자 인코딩입니다. 7비트를 사용하는 ISO/IEC 646 나 8비트를 사용하는..
[C++ 입문자에서 벗어나기]Chapter_1: 타입(Type)#1 C++ 기본 문법을 숙지한 사람들이라면 아래 코드를 쉽게 알 수 있을 것입니다. int num = 0; //num이라는 4바이트 정수형 변수에 0을 저장하라. 이번 포스팅에서는 단순한 이 한 줄의 코드가 컴퓨터 상에서 어떻게 처리되는 지를 보다 자세히 살펴볼 것 입니다. [디지털화] 컴퓨터는 0과 1 즉, 비트 집합만을 이해할 수 있습니다.컴퓨터에게 명령을 내려야 하는 프로그래머들은 자신들이 표현 혹은 처리하고자 하는 사물들의 정보를 컴퓨터가 이해할 수 있는 비트 집합으로 변환을 시켜야하는 데 이 과정을 디지털화라고 일컫습니다.그런데 정보를 디지털화하기 위해서 무작정 아무 "규칙"없이 처리해서는 않되지 않을까요? [C++에서의 타입] C..