-
언리얼의 가비지 컬렉터(GC)게임 상용엔진/Unreal 2025. 2. 19. 19:13
언리얼 엔진의 자동 메모리 관리C++은 저수준으로 메모리 주소에 직접 접근하는 포인터를 사용해 오브젝트를 관리한다따라서 직접 할당과 해지 짝 맞추기를 진행해주어야 한다 (new, delete) 잘못된 포인터의 사용 예시로 - 메모리 누수 (Leak) : new를 했는데 delete 짝을 맞추지 못하였을 때, 힙에 메모리가 그대로 남아있게 된다 - 허상 포인터 (dangling) : 이미 해제해 무효화된 오브젝트의 주소를 가리키는 포인터 - 와일드 포인터 (Wild) : 값이 초기화되지 않아 엉뚱한 주소를 가리키는 포인터잘못된 포인터 값은 다양한 문제를 일으킬 수 있으며 한 번의 실수로 프로그램을 종료시킬 가능성이 존재한다 언리얼의 가비지 컬렉션 시스템프로그램에서 더 이상 사용하지 않는 오브젝트를 자동으로..
-
decltype 타입 지정자란?언어/C, C++ 2025. 2. 18. 19:03
변수를 초기화하는데 표현식을 사용하는 것이 아닌, 컴파일러에서 표현식으로부터 추론한 타입으로 변수를 정의하고자 할 때 사용할 수 있으며 이 지정자는 피연산자 타입을 반환한다.컴파일러에서는 타입을 결정하기 위해 표현식을 분석할 뿐 평가하지는 않는다. decltype(f()) sum = x; // sum의 타입은 f에서 반환한 타입컴파일러에서는 f를 호출했을 때 이 함수에서 반환하게 될 타입을 sum의 타입으로 지정한다. const int ci = 0, &cj = ci;decltype(ci) x = 0; // x는 const int 타입decltype(cj) y = x; // y는 const int& 타입이고 x와 결합decltype(cj) z; // 오류 : z는 참조자이므로 초..
-
constexpr 변수란?언어/C, C++ 2025. 2. 17. 23:16
constexpr 선언을 사용해 변수가 상수 표현식인지 컴파일러에서 확인할 수 있다.constexpr 로 선언한 변수는 암시적으로 const이므로 상수 표현식으로 초기화해야 한다. constexpr int mf = 20; // 20은 상수 표현식constexpr int limit = mf + 1; // mf + 1은 상수 표현식constexpr int sz = size(); // size가 constexpr 함수일 때만 좋음 일반적으로 상수 표현식으로 쓰려는 변수는 constexpr을 사용하는 것이 좋다. 상수 표현식은 컴파일 중에 평가할 수 있으므로 constexpr 선언에 쓸 수 있는 타입은 제한적이다.constexpr에 쓸 수 있는 타입을 상수 타입이라고 하는데 상수 ..
-
[UE5] BPClass에서 StaticMesh로 변환게임 상용엔진/Unreal 2024. 12. 11. 01:34
Tools - Merge Actors 기술을 활용 1. StaticMesh로 변환하고자 하는 Blueprint Class를 열기 2. Add 버튼을 누른 후 StaticMesh 기능을 추가하여 하위 에셋들을 감싸기 3. 빈 레벨을 하나 만든 후 위 Blueprint Class를 적용 4. Tools - Merge Actors 클릭 5. Merge Actors 버튼 클릭이때, 변환하고자 하는 에셋이 클릭된 상태어야 한다.해당 버튼을 누르게 되면 Static Mesh 에셋으로 새로 생성된 것을 확인할 수 있다.
-
10866 덱코딩 테스트/백준 2022. 2. 15. 21:27
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #include using namespace std; const int MAX = 100000; class bojDeque { private: int* dequeMem; int dequeFront, dequeTail; int max, dequeSize; public: bojDeque() : dequeFront(MAX), dequeTail(MAX), max((MAX * 2) + 1)..
-
1158 요세푸스 문제코딩 테스트/백준 2022. 2. 14. 17:39
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, K; cin >> N >> K; queue josephus; for (int i = 1; i
-
10845 큐코딩 테스트/백준 2022. 2. 12. 19:16
https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #include using namespace std; const int MAX = 2000001; class bojQueue { private: int* queueMem; int front, tail; int max, size; public: bojQueue() : front(0), tail(0), max(MAX), size(0) { queueMem = new int[MAX]; }..
-
1406 에디터코딩 테스트/백준 2022. 2. 11. 15:58
https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string arr; cin >> arr; list edit; for (int i = 0; i < arr.size(); i++) edit.push_back(arr[i]); int M; ..