Study/TIL(Today I Learned)

24.09.26 UE5, CS

에린_1 2024. 9. 26. 23:07
728x90

UE5

  • C++로 생성을 하게되면 소스 파일도 같이 생성된다.

클래스 만들기

  • Tools에서 New C++ Class를 누르면 팝업창이 뜨고, Common Classes와 All Classes가 나온다.
  • Common Classes에는 게임제작과 관련된 클래스들이 존재한다.
  • 인스턴스 클래스가 생성된 것을 확인할 수 있다.

언리얼 엔진 컴파일 방법

  • 헤더 파일에 변경이 발생하면 에디터를 끄고 비주얼 스튜디오에서 컴파일한다.
  • 소스 파일에만 변경이 발생하면 라이브 코딩으로 컴파일 한다(Ctrl + Alt + F11)
  • 비주얼 스튜디오에서 수동으로 클래스를 추가하면 안된다.
  • 언리얼 엔진이 제공하는 부모 클래스를 상속 받아서 가상 함수를 오버라이드 해서 재구현 하는 경우 대부분 언리얼 엔진이 작업해 놓은 코드를 실행해 주어야 한다.

로그

  • 언리얼 엔진에서 로그를 남기기 위한 방법은 UE_LOG()를 사용한다.
  • UE_LOG(로그 카테고리(로그별로 볼 수 있게), Verbosity(로그 수준), Format)
  • 언리얼 엔진에서 스트링을 다룰 때, TEXT(””) 라는 매크로를 지정해서 String을 다룬다.

CS

메모리 풀(Memory pool)

  • 메모리 풀은 고정된 크기의 블록을 할당하여 malloc이나 new 연산자와 유사한 메모리 동적 할당을 가능하게 해준다. malloc이나 new 연산자 같은 기능들은 다양한 블록사이즈 때문에 단편화를 유발시키고, 파편화된 메모리들은 퍼포먼스 때문에 실시간 시스템에서 사용할 수 없게 된다.
  • 좀 더 효율적인 방법은 memory pool이라고 불리는 동일한 사이즈의 메모리 블록들을 미리 할당 해 놓는 것이다. 그러면 응용 프로그램들은 실행 시간에 핸들에 의해서 표현되는 블록들을 할당하고, 접근하고, 해제할 수 있다.
  • 프로그래머가 할 수 있는 외부, 내부 단편화의 해결법이다. 프로그래머가 직접 메모리를 관리할 수 있는 특정 크기의 풀(pool)을 만들어서 그 풀에서 메모리를 가져오고, 사용이 끝나면 돌려준다.

장점

  • 단편화를 완화할 수 있다. 할당/해제가 빈번할 때 new/delete를 통해 새로 할당/해제할 필요가 없이 풀에서 가져오고, 반납하면 되므로 비용이 크게 감소한다.

단점

  • 메모리 풀은 프로그래머가 직접 메모리를 0부터 100까지 관리하겠다고 선언하는 것이나 다름없다. 즉, 모든 메모리 문제의 책임은 프로그래머가 가지게 된다.
  • 사용하지 않을 때에도 풀을 유지해야 하므로 메모리 낭비가 생긴다.

페이징(Paging)

  • 페이징이란 가상 메모리를 페이지로 나누어 다루는 기법이다.
  • 페이지(가상 메모리 나눔의 단위)와 프로임(물리 메모리 나눔의 단위)은 1:1 대응되며 (가상 메모리의 주소값과 물리 메모리의 주소값은 다르므로, 자상 메모리 주소를 기반으로 물리 메모리 주소를 찾아가서 데이터를 가져온다.), 이로 인해 물리적으로 연속적이지 않아도 가상 메모리에서 연속된 메모리를 할당할 수 있기 때문에 외부단편화를 완화한다.
728x90

'Study > TIL(Today I Learned)' 카테고리의 다른 글

24.10.02 UE5, 알고리즘  (1) 2024.10.02
24.09.30 UE5  (1) 2024.09.30
24.09.25 Unity, CS  (1) 2024.09.25
24.09.24 C++, 책  (1) 2024.09.24
24.09.23 C++, CS  (0) 2024.09.23