목록언리얼 엔진/C++ (26)
게임 개발 메모장
1. 람다 함수 정의 및 문법 출력 결과 7 7 람다함수의 기본적인 구조는 아래와 같음 [변수 캡쳐](받을 인자)->리턴타입{함수}(넘길 인자) [변수캡쳐]는 현재 함수에서 사용할 외부 변수들을 뜻함 main함수에 int num;이라는 변수가 있다면 그 변수를 사용하기 위해서는 변수 캡쳐를 사용하여야 한다 변수 캡쳐에 =를 넣으면 해당 함수의 모든 변수를 전부다 사용한다는 의미 &을 넣으면 모든 변수를 참조형으로 받아들인다는 의미이다 [=, &num]처럼 특정 변수만 참조형으로 사용하는 것도 가능 비워두면 아무것도 사용하지 않는다는 뜻 참고로 전역변수는 캡쳐를 해줄 필요가 없다 (받는 인자) 부분은 말 그대로 함수에서 받는 인자들이다 일반적으로 int add(int a, int b); 선언할때 괄호 안..
정답은 가독성, 본인 스타일 대로 하면 된다고 한다. 성능에 차이는 없다. 따라서 나는 다중 if문이 가독성이 좋으므로 그렇게 하겠다. OKKY 답글 1. if문 가지고는 성능에 크게 영향이 없을거에요. 다만 가독성에서 차이가 날거라 생각합니다. 2. if( ) 가 4개가 있는것과 if( 조건 ) if안에 조건이 4개가 있는것의 성능차이를 말씀하신건가요?? 먼저 말씀드리면 성능은 차이가 없습니다. 어셈블리어로 변환되도 같으니까요. if( 조건1 || 조건2 || 조건3 || 조건4) 이런식이 있다면 조건1을 먼저 계산을 할텐데 이때 true가 나온다면 조건2,3,4는 확인하지않고 if문안으로 들어가게 됩니다. &&연산도 마찬가지로 먼저 false가 나와버린다면 더이상의 조건검사를 하지 않아요.
전역 변수(global variable) 전역 변수란 함수의 외부에서 선언된 변수를 의미한다. 전역 변수는 프로그램의 어디에서나 접근할 수 있으며, 프로그램이 종료되어야만 메모리에서 사라진다. 이러한 전역 변수는 메모리상의 데이터(data) 영역에 저장되며, 직접 초기화하지 않아도 0으로 자동 초기화된다. #include void local(void); int var; // 전역 변수 선언 int main(void) { printf("전역 변수 var의 초깃값은 %d입니다.\n", var); int i = 5; int var = 10; // 지역 변수 선언 printf("main() 함수 내의 지역 변수 var의 값은 %d입니다.\n", var); if (i < 10) { local(); printf("..
댕글링 포인터란 C 에서 예를 들면 malloc() 함수를 이용해 Heap 공간에서 동적 메모리를 할당한 후에는 free() 함수를 통해 할당된 메모리를 해제 한다. 하지만, 포인터가 여전히 해제된 메모리 영역을 가리키고 있을 때에 문제가 될 수 있는데, 이것을 댕글링 포인터라고 부른다. 문제점 * 메모리 접근시 예측 불가능한 동작을 일으킬 수 있다. * 메모리 접근 불가 시 Segmentation fault가 발생한다. * 잠재적인 보안 위험이 있을 수 있다. 처음에 *ptr을 1로 값을 넣어주고 메모리를 해제해주었는데 ptr은 여전히 처음 할당된 메모리 영역을 가리키고 있다. 여기서 다시 *ptr = 2 처럼 해제된 메모리 영역에 접근하게 되면 문제가 발생할 수 있다. 해결 방법 free() 함수를 ..
- 디버그 모드에서 디버깅시 어떤 이유 때문에 에러가 났는지를 알 수 있는 유용한 키워드다. - #include 를 해주어야 사용이 가능하다. 1. assert(조건) * 이 조건식이 false 라면 런타임 에러가 나도록 한다. #include using namespace std; int main() { int number = 5; assert(number == 4); return 0; } 1) Release모드 에선 아무런 문제가 없는 코드. 2) 하지만, Debug모드에선 에러를 발생. - assert(number == 4) : number 값이 4가 아닌 5이기 때문. - 프로그래머가 직접 number값이 4가 맞는지 찍어보지 않더라도 number값이 4가 아니면 에러를 발생시켜주므로 디버깅 시 편..
C/C++를 사용하는 이유 중 하나로는 빠른 속도와 커스터마이징 가능한 자원관리 등의 최적화를 위해서 사용할 것이다. 이러한 부분에서 코드를 개발하면서, 컴파일러단에서 부터 코드를 최적화 시켜서 더욱 바르게 실행 할 수 있도록 하려는 노력들이 많이 있다. 이처럼 C/C++ 에서는 내가 원하는대로 코드를 작성하더라도 컴파일러에 의해 최적화 시킬 여지가 있으면 그러한 부분은 컴파일러가 최적화 시켜서 돌아가도록 만들어준다. RVO(Return Value Optimization) #include class Yoo { public: Yoo(const std::string& name) { this->name = name; std::cout