스택 프레임(stack frame) 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다. 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역 변수 등이 저장됩니다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 합니다. 이러한 스택 프레임 덕분에 함수의 호출이 모두 끝난 뒤에, 해당 함수가 호출되기 이전 상태로 되돌아갈 수 있습니다. 스택 프레임의 동작 방식 예제 int main(void) { func1(); // func1() 호출 return 0; } void func1() ..
1. 바인딩(Binding)이란? 프로그램 소스에 쓰인 각종 내부 요소, 이름 식별자들에 대해 값 또는 속성을 확정한 과정을 바인딩이라고 한다. 2. 정적 바인딩(Static Binding)이란? 바인딩의 정의에서 보는 바와 같이 바인딩 과정이 컴파일 시점에 이루어지는 바인딩을 정적 바인딩이라고 한다. 아래의 예제 소스는 int라는 타입을 갖고, a라는 이름의 변수명으로 선언이 되어 있다. 이처럼 소스상에 명시적으로 타입과, 그 타입의 변수명을 선언하는 것을 정적 바인딩(Static binding)이라고 한다. int main() { int a = 0; } 1) 장점 (1) 컴파일시 타입에 대한 정보가 결정되기 때문에 속도가 빠르다. (2) 타입 에러로 인한 문제를 조기에 발전할수 있어서 안정적이다. ..
언리얼 엔진은 보면 볼수록 참 대단하다는 생각이 든다. 그중에서도 가장 대단하다고 생각되는 것은 리플렉션 시스템과 가비지 컬렉터다. 오늘은 가비지 컬렉터에 대한 나의 삽질기를 얘기해볼까 한다. https://api.unrealengine.com/KOR/Programming/UnrealArchitecture/Objects/Optimizations/index.html#%EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4%EC%9E%90%EB%8F%99%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8 위 문서에는 굉장히 중요한 얘기가 있다. AActor 또는 UActorComponent가 소멸되면 레퍼런스는 자동으로 null이 됩니다. 이 기능은 UPROPERTY로 마킹되어 있거나..
Memory 영역 (Stack vs Heap) 컴퓨터에서 메모리 영역은 아래와 같이 나뉘어있다. Code : 실행한 프로그램의 코드가 저장됨 Data : 전역변수와 static변수가 저장되며 프로그램 종료 시까지 사라지지 않고 남아있음 Heap : 동적으로 할당된 메모리영역이며 프로그래머에 의해 할당( C++ : new, C : malloc ) 및 해제( C++ : delete, C : free )됨 Stack : 지역변수와 매개변수가 할당되고 함수를 빠져나가면 자동 소멸됨 정적 메모리 할당 vs 동적 메모리 할당 프로그래밍 관점에서 메모리 영역에는 크게 stack과 heap 메모리 공간이 있다. 정적으로 메모리를 할당하면 컴파일 시 stack 영역에 할당되며, 함수를 빠져나갈 때 소멸된다. 프로그램 컴..
...\EngineVersion\Engine\Config -> BaseEditorPerProjectUserSettings.ini 드래그 부분 수정 - ReceiveBeginPlay는 키변경 후 +Node=(Class=KismetSystemLibrary:PrintString Key=P Shift=false Ctrl=false Alt=false) 추가 P 키는 원하는데로 수정하시면 됩니다.
UE4에서 비동기 애셋 로딩이란 실행시간에 애셋을 로드/언로드하는 메서드를 의미합니다. 비동기 애셋 로딩은 개발 도중이나 디바이스상에서 쿠킹된 데이터로 실행할 때나 동일하게 작동하므로, 필요에 따라 데이터를 로딩하기 위한 별도의 코드 패스를 유지할 필요가 없습니다. 이렇게 필요에 따라 데이터를 로드 및 참조에 사용되는 방법은 일반적으로 두가지가 있습니다. 1. FSoftObjectPath와 TSoftObjectPtr FSoftObjectPath는 애셋의 전체 이름으로 된 스트링이 들어있는 단순한 구조체입니다. 클래스에 이 유형의 프로퍼티를 만들면, 에디터에는 마치 UObject* 프로퍼티인 양 나타납니다. 쿠킹과 리디렉터도 제대로 처리되므로, FSoftObjectPath가 있다면 디바이스에서의 정상 작동..