목록2024/04 (3)
초보 코린이의 성장 일지
Byte Padding 설명 바이트 패딩(byte padding)은 구조체(struct)나 클래스(class)의 멤버 변수들이 메모리에 배치될 때, 메모리 정렬(align)을 위해 추가적인 바이트가 삽입되는 현상을 말한다. 구조체나 클래스에 바이트를 추가해 CPU 접근에 부하를 덜어주는 기법이다. CPU가 32비트에서는 한번에 4바이트. 64비트에서는 한번에 8바이트를 읽을 수 있다. #include using namespace std; struct TestStruct { char a; // 1바이트 int b; // 4바이트 char c; // 1바이트 float d; // 4바이트 }; class TestClass { short a; // 2바이트 char b; // 1바이트 int c; // 4바이..
1. AIController 내장함수인 SetFocus를 사용해 볼 것이다. 1. Service_Boss Tick에서 SetFocus를 사용하여 Player를 바라보도록 지정해줬다. 1. 여기서 문제가 발생한다. 2. Player가 만약 공중에서 움직이거나 스킬을 사용했을 경우, 공중에서 스킬을 통해 Boss가 Hit됐을 경우 Boss가 나를 계속 바라보고 있으므로, 공중에 있는 Player의 방향으로 몸이 꺽이게된다. 3. 몸이 꺽였으므로 바닥으로 들어가는 현상도 발생한다. 4. 공중에있는 Player에 공격으로 Boss가 스킬을 사용했을때 나를 바라보면서 몸을 움직였기 때문에, 축이 틀어져서 망가지는걸 확인할 수 있다. 5. 다시 Hit가 되지 않는한 저 상태에서 풀리지 않고 축이 꺽인 상태로 동작들..
Casts 설명 데이터 형식을 다른 데이터 형식으로 변환하는 작업 Casts의 종류 1. 정적 캐스트(static_cast) 자료형을 변경하기 위해 사용. 컴파일 시간에 형변환이 가능한지 검사한다. 클래스가 잘못된 캐스팅 시 런타임 중 유효성 검사를 하지 않는다. 상위계층에서 하위계층, 하위계층에서 상위계층 둘다 데이터 타입 변환은 가능하다. 하위계층 데이터 타입 변환에는 안전하지 않으므로, 상속 관계에 있는 클래스 간의 캐스팅을 수행할 때는 dynamic_cast를 사용하는게 좋은 방법이다. 포인터 간의 변화에도 사용할 수 있다. 부모 클래스에서 자식 클래스로 캐스팅하려고 할 때, static_cast는 컴파일러에게 허용하도록 지시하지만, 실제로 캐스팅이 안전한지는 확인하지 않는다. #include u..