실행 파일을 만드는 과정소스코드에 담긴 메타 정보를 처리한다.소스코드를 머신이 읽을 수 있는 정보로 변환, 기계어(바이너리 (0,1))기계어를 사람이 읽을 수 있도록 번역한 언어가 어셈블리어 컴파일 단계에서 작성한 여러 Object파일을 실행가능한 파일 (어플리케이션이
기본적으로 4바이트 할당이런 식으로 구현시 1바이트 할당하지만 위처럼 짜면 형변환 체크가 안됨묵시적 형변환이 다 허용된다.이렇게 짜게되면이런 묵시적 형변환이 오류가 난다.
switch
이렇게 비트 열거형을 만들어 놓으면, 해당 특성이 적용되었는 지 확인하는 데 편리함.1번 3번이 적용되었다 라고 하면 이런식으로 | 연산자로 연산이 가능하다.비트를 추가적으로 포함해주기 위해선 | (or연산) 을 사용한다.비트가 포함되어 있는지 확인하기 위해서는 & (
하드코딩된 리터럴 상수값 ex) 3.14 \* radius \*radius3.14라는 상수값대신 PI이런 식의 변수를 사용하는 권장된다.메모리에서 채워넣는 상수값을 일컫기도 한다.ex) 0xcdcdcdcd 메모리 할당 후 초기화 되지 않은 힙 메모리int값
_ASSERT debug모드일 때, 동작하며 프로그래머의 실수 탐지용으로 자주 사용된다. _ASSERT() 내부에는 true인 조건만 들어가야 하며, 조건이 false일때 실행되면 에러를 띄운다. 스마트 포인터 c++에서 메모리관리를 효율적으로 하게 해주는 포인터.

RVO, NRVO RVO는 return value Optimization이고 Nrvo는 named return value optimization이다. 컴파일러가 최적화하는 동작으로 함수에서 반환할 객체가 있을 때 동작한다. Nrvo는 반환할 객체를 새로 선언 후 반환
위처럼 배열을 초기화하는 함수가 있다고 할 때,Array를 크기의 두 배만큼 초기화했다고 하자그리고 바로 밑에 Array2를 생성하면 Array2도 같은 스택의 메모리를 사용하기 때문에 Array2의 메모리에 이미 초기화된 값이 저장되어 있다. 버퍼 오버플로우가 일어난
visual studio에서 디버깅 중에 데이터에 중단점을 걸 수 있다.해당 데이터에 접근할때마다 중단점이 적중된다.위와 같이 const char\* 형으로 선언하면 StringA가 가리키는 영역은 data영역의 리터럴 상수 "Hello"이다.하지만 위처럼 const
싱글턴 패턴 클래스에서 instance가 하나만 유지되는 패턴 위처럼 static으로 인스턴스를 생성 후, static 함수 Get()을 이용해 인스턴스를 호출한다. 대부분 프로그램이 종료될때까지 유지되도록 구현하지만 원하는 시점에 소멸하도록 구현할 수 있다.
interface 이런식으로 그냥 클래스로 구현후, 순수 가상 함수를 선언해 상속받는 자식 클래스들은 전부 구현하도록 강제함. 이런식으로 __interface 키워드로 interface를 명시해준다면 해당 인터페이스를 상속받는 모든 자식은 인터페이스 내부의 함수를
list는 이중연결리스트로 구현되어있다.이론적으로는 중간 노드 추가와 제거가 vector보다 빠르지만,연결리스트 구조인 list 특성상 메모리 파편화가 될 가능성이 있기 때문에,캐시미스 발생으로 vector가 더 빠를 수 있다.이런식으로 우선순위큐를 작성해도 되지만,
벡터 특성상 원소 삽입시 capacity를 넘어갈 때, 새 메모리에 할당된 후, 기존 메모리 값들을 다 복사해간다.따라서 벡터 원소를 참조하고 있으면 value가 새 메모리가 아닌 이전 메모리를 참조할 수 있기 때문에 위험하다.
ofstream을 이용해 Test.txt파일을 write모드로 열고 원하는 값들을 작성 후, 마지막에 닫기 ifstream을 이용해 Test.txt파일을 읽기모드로 열고 원하는 값들 읽어온 후, 닫는다.ofstream 끝에 인자를 추가해준다. std::ios::bina
io를 해줄 아이템 클래스를 작성해봤다.멤버변수로는 itemName, limitLevel, isUsable 간단히 이렇게 세 가지를 저장했다.rapidjson::Value&형으로 인자를 받아온다.InOutVal에 addmember함수를 이용해 key와 value를 저장

메모리풀
메모리 헤더 이전 TIL - 15에서 구현한 메모리풀에서 나아가 메모리 헤더를 구현해본다. 메모리 헤더 이렇게 생겨서 인자를 전해줄 때 사용 가능하다. FClass2 이렇게 FClass2에 GetMemoryHeader()함수가 있다. 설명은 FMemoryheader
정적 라이브러리(.lib)는 빌드 시점에 exe에 통합된다. 동적 라이브러리(.dll)은 런타임에 exe에 로드된다. 프로젝트에 해당 코드를 그대로 가져온다. 다른사람이 만든 프로젝트를 솔루션에 포함해서 참조한다. 이미 만들어둔 .lib를 빌드 시점에 링크해서
mipmap uv tile

데이터 에셋 인스턴스에 데이터를 저장해서 사용한다.c++ 클래스 만들기를 통해 만들 수 있다.생성되면 이런식으로 UDataAsset을 상속받는다.후에 다른 클래스에서 위와 같은 식으로 데이터 에셋의 값을 바로 넣어줄 수 있다.뭔가 유니티의 스크립터블 오브젝트처럼 데이터
클래스를 찾아올 때 맵에 로드된 적 없는 클래스를 찾으려면 아래 함수를 사용해서 찾으면 된다.주로 생성자에서 사용된다. 예시)맵에 이미 로드된 클래스를 찾아오려면 아래 함수를 사용하면 된다.예시)유니티에선 각 오브젝트마다 ontriggerenter함수를 이용해 trig
FString: wstring FName: hashed FText: 다국어 처리가 포함된
회전 관련 세 함수가 있길래 어떤 식으로 동작하나 조사해봤다.아래 참고링크에 물체의 회전을 gif로 자세히 보여주는 포럼 글이 있다.오브젝트의 부모의 축 기준으로 회전한다. 로컬 오브젝트 축 기준으로 회전한다월드의 좌표계를 기준으로 회전한다.회전에 대한 포럼 글http