17일차 (1/4)

2024. 1. 4. 10:00Unreal 강의

동적 할당

동적 할당은 정적 할당과는 다르게 상수만 입력해야하는 것이 아니다. 동적 할당은 if문과 같이 사용하는 등 조건을 달아 사용할 수 있다.

동적 할당은 무조건 포인터 기반이다.

 

일반적으로 new를 하고 리턴값을 받지 않으면 무조건 릭이 된다.

 

동적 할당을 이용해서 소유의 개념을 표현할 수 있게 된다.

 

할당한 곳에 또 할당하면 안된다.

같은 곳에 할당하면 다음과 같이 메모리가 할당되는데 이때 delete를 해도 하나만 내용이 지워져서 남아있는 메모리, 즉, 릭이 생긴다.

 

그리고 방어코드를 꼭 쳐야한다. 동적 할당과 관련된 오류들은 프로그램을 종료시킬 정도로 심각한 오류가 생길 확률이 높다.

nullptr은 사용할 수 없기 때문에 null 레퍼런스 익셉션이 뜨지않게 조심해야한다.

if (nullptr != Ptr)
{
    *Ptr = 10;
}

 

delete를 했으면 그 포인터에 nullptr을 넣어준다. 안해주고 값을 넣는 코드를 댕글링 포인터라고 하고 이게 있으면 쓰기 엑세스 오류가 터진다.

 

if (nullptr != Ptr)
{
    delete Ptr;
    Ptr = nullptr;
}

0번지를 지우면 안되기 때문에 사용하는 방어 코드다. safe_delete 형식이라고 한다.


라이브러리

게임을 만들다보면 엔진 요소(물리, 중력, 빛, 디버깅, 랜더링, 메쉬, 이미지 등)와 컨텐츠 요소(플레이어, 몬스터, 블록, 규칙 등)가 있다. 그래서 각각 프로젝트 단위로 만든다.

 

라이브러리 만드는 법

1. 새 라이브러리 프로젝트를 만든다.(라이브러리로 만들어도 되지만 우선 빈 프로젝트로 배우면서)

2. 만들고싶은 새 콘텐츠 프로젝트를 만든다.

3. 콘텐츠 프로젝트의 헤더 사용 추가를 위해 콘텐츠 프로젝트 - 속성 - 디렉터리로 간다. 우선은 속성 상단의 구성을 모든 구성으로 바꾸고 플랫폼은 모든 플랫폼으로 설정한다. 그리고 포함 디렉터리에 ..\를 추가한다. 그리고 콘텐츠 프로젝트에서 #include <를 입력하고 사용할 헤더 파일을 추가한다.

구성과 플랫폼 설정
포함 디렉터리 설정

4. 라이브러리 프로젝트에 테스트용 함수를 추가한다. 이대로 그냥 콘텐츠 프로젝트에서 사용하면 에러가 난다. 그 이유는 헤더만 사용이 가능해졌을 뿐 Cpp는 사용하는 설정을 하지 않았기 때문이다.

5. 콘텐츠 프로젝트의 참조에서 참조 추가로 라이브러리 프로젝트를 추가한다.

참조 추가

6. 라이브러리 프로젝트의 속성을 누른다. 일반 - 구성 형식을 정적 라이브러리로 바꾼다.

라이브러리 프로젝트 구성 형식 변경

7. 솔루션 속성 - 프로젝트 종속성 - 콘텐츠 프로젝트에서 참조한 라이브러리가 체크되어있는지 확인한다.

이전엔 프로젝트 종속성에서 직접 체크를 해주어야 했으나 지금은 참조 추가하면 자동으로 체크된다.

'Unreal 강의' 카테고리의 다른 글

18일차 과제  (0) 2024.01.05
18일차 (1/5)  (0) 2024.01.05
16일차 (1/3)  (0) 2024.01.03
15일차 (1/2)  (0) 2024.01.02
14일차 (12/29)  (0) 2023.12.29