전체 글

게임 서버 개발자가 되기 위한 부지런한 노력들
·C++
RTTI란- RunTime type Information(런타임 타입 정보)의 약자로 런타임 시점에서 객체의 실제 타입 정보를 제공하는 기능 입니다.대표적인 기능으로는 Rtti메모리 공간 안의 type_info를 이용해서 typeid와 dynamic_cast를 사용할 수 있습니다. RTTI 생성 시점- RTTI는 컴파일 타임에서 생성되며, 프로그램 정적 데이터 영역에 위치합니다. vtable이 생성되면 테이블에 RTTI 블록이 연결됩니다. vtable가 생성될 때, 첫번째 위치에 RTTI 블록 포인터를 위치 시킵니다. vtable의 구조 (단순화된 형태)vtable (Base의 vtable)+-------------------+ | RTTI 블록의 포인터 | -- RTTI 블록에 대한 포인터 +-----..
·C++
vtable (링킹 단계에서 vtable과 rtti 블록이 데이터 세그먼트에 추가)- vtable은 클래스당 하나씩 존재합니다. - 클래스의 모든 가상 함수 주소가 vtable에 저장됩니다. vptr (초기화는 생성함수가 실행될 때, 생성함수 내부에서 vptr를 해당 vtable 주소값으로 초기화)- 객체마다 생성될때 vptr가 설정 되며, 해당 vptr은 vtable을 가킵니다. - 크기는 포인터 크기와 같습니다. (64비트 프로그램에선 8바이트)   메모리 레이아웃이란 : 객체 내부의 메모리 구조입니다. 어떤 변수(vptr, 객체 내부 멤버 변수)들이 어떤 순서로 배치 되었는지를 나타내는 것 입니다.
·C++
1. 람다 식에서 캡쳐를 사용할때, this를 캡쳐하는것이 아닌 필요한 변수들만 캡쳐하기.  2. 구조체를 생성할때 메모리 작은 순으로 정렬하여 구조체 패딩 줄이기 ex)struct k{     char k; // 1바이트     int k; // 4바이트로 8바이트를 만들기 위해 3바이트 패딩 발생     char k; // 1바이트}=>  struct k{     char k; // 1바이트     char k; // 1바이트     int k; // 4바이트로 작은 순서대로 정렬}  3. 가상 함수 사용 줄이기- 가상 테이블이 선언 되면 vtable 8바이트의 메모리 공간이 사용됩니다.  4. 동적 할당 메모리 사용 줄이기- new로 동적 할당 되면, 추가 관리 정보를 위해 16바이트 이상의 메모리..
쿼카만지고싶어요
게임서버