최신 글
Unreal Engine GameMode와 GameState 차이: 서버 권한과 게임 상태를 어디에 둘까?: 규칙은 GameMode, 공유 상태는 GameState
댓글수 0 · 2026.07.03
줄 요약: Unreal Engine에서 GameMode는 서버에서 게임 규칙과 입장 흐름을 결정하고, GameState는 모든 클라이언트가 알아야 하는 게임 전체 상태를 복제해 공유하는 역할을 맡습니다.먼저 알아야 할 배경Unreal 멀티플레이 코드를 처음 작성할 때 가장 자주 헷갈리는 지점이 GameMode와 GameState의 책임입니다. 둘 다 ‘게임 전체’와 관련되어 보이지만, 네트워크 관점에서는 존재 위치와 접근 가능한 대상이 다릅니다.Epic 공식 문서 기준으로 GameMode 인스턴스는 서버에만 존재하며 원격 클라이언트로 복제되지 않습니다. 반대로 GameState는 서버와 클라이언트에 존재하고, 게임 진행 중 모두가 알아야 하는 상태를 동기화하는 데 사용됩니다.이 구분을 놓치면 클라이언트 ..
C++ RAII란 무엇일까? new/delete 없이 자원을 안전하게 관리하는 방법: 스코프와 소멸자로 정리 책임을 묶는 C++ 습관
댓글수 0 · 2026.07.01
한 줄 요약: RAII는 파일, 메모리, 락 같은 자원을 객체가 생성될 때 획득하고 객체 수명이 끝날 때 자동으로 해제하게 만들어 예외와 조기 반환에서도 정리 코드를 놓치지 않게 하는 C++의 핵심 설계 방식입니다.먼저 알아야 할 배경C++에서 자원 관리는 단순히 `delete`를 잘 호출하는 문제가 아닙니다. 함수 중간에서 예외가 발생하거나 여러 return 경로가 생기거나 유지보수 중 분기가 추가되면, 처음에는 맞아 보이던 `new/delete`, `open/close`, `lock/unlock` 짝이 쉽게 깨집니다.RAII는 정리 코드를 사람이 기억해야 하는 절차에서 타입이 책임지는 규칙으로 옮깁니다. 객체가 스코프에 들어올 때 자원을 잡고 스코프를 벗어날 때 소멸자가 자원을 놓으면, 정상 종료와 ..
C++ std::move는 무엇을 이동할까? 이동 생성자와 이동 대입 연산자 이해하기: std::move는 값을 옮기는 함수가 아니라 이동 가능 표시다
댓글수 0 · 2026.06.29
한 줄 요약: `std::move`는 객체의 내용을 직접 옮기지 않고 lvalue를 rvalue처럼 취급하게 만드는 캐스팅 도구이며, 실제 자원 이전은 선택된 이동 생성자나 이동 대입 연산자가 수행합니다.먼저 알아야 할 배경C++에서 `std::move(name)`이라는 표현을 처음 보면 name 안의 데이터가 그 자리에서 다른 곳으로 이동한다고 생각하기 쉽습니다. 하지만 `std::move` 자체는 포인터를 바꾸거나 문자열 버퍼를 비우는 작업을 하지 않습니다. 이 함수는 오버로드 해석이 이동 생성자나 이동 대입 연산자를 선택할 수 있도록 표현식의 값 범주를 바꿔 줍니다.이 차이를 모르면 이동 후 객체를 잘못 사용하거나, const 객체에 무의미하게 std::move를 붙이거나, 반환문에 불필요한 std..
C++ 기초 얕은 복사와 깊은 복사의 차이는 무엇일까? double delete부터 Rule of Zero까지
댓글수 0 · 2026.06.25
한 줄 요약: 얕은 복사는 멤버가 가리키는 주소를 그대로 복사할 수 있지만, 깊은 복사는 복사본이 독립적으로 소유할 자원을 새로 만들며 modern C++에서는 RAII 타입으로 이 책임을 맡기는 편이 안전합니다.먼저 알아야 할 배경C++에서 객체를 대입하거나 값으로 전달하면 복사가 일어날 수 있습니다. int나 std::string만 가진 클래스라면 컴파일러가 만들어 주는 멤버별 복사가 대체로 원하는 값 의미를 제공하지만, 직접 할당한 메모리를 원시 포인터로 소유하면 같은 기본 복사가 전혀 다른 결과를 만듭니다.`copied = original`을 보면 original의 모든 내용이 새로운 공간에 복제된다고 기대하기 쉽습니다. 하지만 기본 복사는 각 멤버의 복사 규칙을 그대로 적용하므로 포인터 멤버에서..
C++ const 위치별 의미 정리: const int*, int* const부터 멤버 함수까지
댓글수 0 · 2026.06.23
한 줄 요약: C++의 const는 붙는 위치에 따라 값, 포인터, 포인터가 가리키는 대상, 멤버 함수의 객체 상태 중 서로 다른 부분을 수정하지 않겠다는 계약을 표현합니다.왜 중요한가C++ 코드를 읽다 보면 `const int*`, `int* const`, `const int* const`, `Title() const`처럼 const가 여러 위치에 등장합니다. 문법을 통째로 외우면 잠시 후 다시 헷갈리지만, const가 바로 왼쪽 타입을 제한하고 왼쪽에 대상이 없으면 오른쪽을 제한한다고 읽으면 무엇이 고정되는지 차근차근 확인할 수 있습니다.const는 단순히 컴파일 오류를 늘리는 장치가 아닙니다. 함수가 입력을 읽기만 하는지, 포인터를 다른 대상으로 바꿀 수 있는지, const 객체에서도 멤버 함수를 ..