C++/[AssortRock] C++ 기초 다지기
CPP_1. AssortRock 3일차 오프라인 수업_220907
헛둘이
2022. 9. 8. 15:19
클라이언트 프로그래머의 고비에 대한 이야기
- C에서 맞닥뜨리는 포인터
- C++에서는 클래스
- 그 후 자료구조 알고리즘
- 그리고 DirectX의 렌더링 파이프라인
서버 프로그래머의 고비에 대한 이야기
- 서버 프로그래머는 렌더링 파이프라인 대신 멀티 스레드 프로그래밍이 고비
- 여러 유저들이 동시 접속하기 때문에 동시에 처리되어야 하는 문제들이 있어서, 디버깅이 매우 어렵다.
- 멀티 스레드 외에 멀티 프로세스라고 실제로 프로그램을 여러 개 실행하는 방법이 있는데,
- 멀티 스레드 프로그래밍보다 비효율적이다.
- 그래서 서버 프로그래머의 경우 디버깅이 어렵기 때문에 콘솔창에 상태 로그를 띄워서 모니터링하고
- 그 모니터링을 보며 버그나 문제점을 체크한다.
커리큘럼 진도, 속도에 대한 이야기
- 지금 공부하는 것들의 진도나 양이 빠듯하게 느껴질 수 있는데, 개인적으로 시간을 많이 투자해서 연습해야 한다.
- (내주시는 숙제 등등..)
- 이후에 API나 DIRECT2D, 3D 할때는 숙제가 없고 이렇게 하나 하나 테스트하면서 해 볼 시간이 없다.
2차원 배열에 대한 이야기
- 배열의 배열을 만들고 싶을 때가 있다.
- 그런 경우엔 int arr2[5][5]; 이런 식으로 만들면 된다.
- int형 5개의 배열이 다시 5개가 모인 배열이라는 뜻이다.
스택 오버플로우에 대한 이야기
- 스택 오버플로우는 스택이 넘치는 현상을 말한다.
- 대표적으로 재귀함수를 사용할 때 종료조건을 만들지 않으면 발생한다.
스택 메모리에 대한 이야기
- 스택 메모리의 크기는 기본값 1MB이며,
- 프로젝트 속성 -> 링커 -> 시스템 -> 스택 예약 크기를 이용해서 설정해줄 수 있다.
디버그, 릴리즈모드에 대한 이야기
- 디버그모드로 프로그램을 만들면 더 큰 크기의 프로그램이 생성된다.
- 디버그모드일 때 프레임이 잘 안나올 때가 있다.
- 프레임 : 초당 화면 갱신 횟수
- 이 때 릴리즈 모드로 바꿔주면 프레임이 잘 나온다.
- 릴리즈모드는 디버그모드에 비해 최적화옵션이 있어서 더 최적화됨
렌더링에 대한 이야기
- 로직이 실행된 후 다시 화면에 그려주는 것을 렌더링이라고 한다.
물리 처리에 대한 이야기
- 물리 처리의 경우 로직에 넣기보단 로직 다음에 처리하던지 렌더링 후에 처리하던지 한다.
- 왜냐하면 물리 처리 자체가 무겁기 때문
재귀함수에 대한 이야기
- 함수 내부에서 다시 자기 자신을 호출하는 함수
- 종료 조건을 설정해주어야 함
- DFS라고 해서 트리나 그래프 순회할 때 사용한다.
문자에 대한 이야기
- 1바이트면 영여는 문제 없이 저장이 가능하다. (256가지 2^8승)
- 하지만 한글은 경우의 수가 많기 때문에 1바이트로는 감당할 수 없다.
- 그래서 멀티바이트를 사용한다 (멀티바이트는 1바이트와 2바이트를 혼용)
- wchar_t는 2바이트 문자도 저장 가능하다.(특수문자 같은 것들도 저장할 수 있다.)
대문자를 소문자로 바꾸고 싶을 경우
- 아스키 코드를 활용하면 변경 가능하다.
- 대문자에 32를 더하면 소문자가 된다.
- 대소문자 판별의 경우는 if (ch2 >= 'A' && ch2 <= 'Z')로 응용 가능
포인터에 대한 이야기
- 메모리는 메모리 고유의 주소가 있다.
- 주소를 저장하고 싶을 때는 포인터 변수를 사용한다.
- 포인터 변수는 어떤 자료형이던 간에 4바이트 안에 주소값을 저장할 수 있다.
- C++의 장점은 주소값을 받아서 연산해줄 수 있는 것.
- 대신 사용하기 어렵기 때문에 자바나 C#은 포인터 변수를 없애버렸다.(가비지컬렉터)
- 배열의 이름은 배열의 0번째 원소다.
- 어떤 자료형을 포인터 변수에 저장할 때는 그 포인터 변수의 타입을 자료형과 맞춰주어야 한다.
- *(별)을 찍으면 그 포인터 변수가 가리키고 있는 주소의 값에 접근한다.
포인터 연산
- 포인터 변수 앞에 별(*)을 찍으면 역참조 한다는 뜻으로 그 메모리 주소에 접근하여 값을 꺼내 온다.
- 포인터 변수에 1을 더해주면 그 포인터가 가리키는 자료형만큼 이동한다.
32비트 운영체제에 대한 내용
- 32비트 운영체제에서는 4GB를 초과해서 인식할 수 없다.
- 한 번에 처리할 수 있는 데이터의 양이 4GB가 한계기 때문에 램도 4GB밖에 사용할 수 없다.
- 운영체제의 Bit의 크기는 CPU가 처리할 수 있는 최대 크기이다.