월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
환경 설정을 따로 해야되는 것인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 6분1 6초에 insert에 커서를 올려서 반환값을 설명해주시는데 제가 visual studio에서 따라 치면 다르게 나와서 답답한데 따로 설정해야되는 것이 있는건가요? 그리고,,, 10분 42초에 pair<const int, int>& p = (*it); 에 &이 붙은 이유가 궁금합니다.. 항상 부족한 저에게 잘 가리쳐주셔서 감사합니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
마지막 문제 질문
for (int i = 0; i < 10; i++) { arrows[i]->AttackTarget(); // 기사가 죽었으면 소멸시켜준다 if (knight != nullptr) { if (knight->IsDead()) { delete knight; knight = nullptr; break; } } 기사가 죽은 뒤에 화살이 죽은 기사를 공격하는게 문제라면 기사가 죽었을 때 화살을 더이상 쏘지 않게 break로 빠져나가면 된다고 생각했었는데 이럴 경우 크래시는 나지 않는데 문제가 있을까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
분기문 강의 5분대 isDead의 설명이 이해가 안갑니다.
안녕하세요 강의 정말 잘 보고있습니다. 한가지 의문이 생겨서 문의드립니다. 분기문 강의 중 5분대에서 어셈블리어로 코드를 실행해서 보여주시는데 여기서 isDead에 대해서 전역변수 라고 말씀해주시는데 isDead라는 변수는 main함수 내에서 선언이 되어있으니 전역변수가아니라 스택 영역내에있는 지역변수가 아닌가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터 기초#2 궁금한점입니다.
포인터 기초#2 강의에서 int 자료형인 number를 캐스팅을 이용하여 __int64 포인터 변수인 *ptr2로 집어넣고 *ptr2 에 0x0000AABBCCDDEEFF를 집어넣어서 메모리가 밀리는 현상을 보여주셨는데, number의 주소에 가보면 (number의 주소) : ccddeeff 한 칸 높은 주소 : 0000aabb 로 되어 있는 이유가 리틀-엔디안 방식이기 때문인건 알겠습니다. 근데 저장이 될 때 한칸 낮은 주소 : ccddeeff ( number의 주소) : 0000AABB 의방식으로 저장되지 않는 이유가 궁금합니다. 스택 프레임은 높은 주소에서 낮은 주소로 쌓이는 형식으로 되어있고, main함수 안의 변수도 스택 메모리를 차지하는 입장이므로 변수의 크기가 주소를 넘어가면 더 낮은 메모리에 저장되야 하지 않나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수템플릿 특수화랑 오버로딩이랑 다를게있나요?
template<> void Print(Knight a) 라고쓰셧는데 딱히 템플릿을 붙이지 않아도 잘동작하고 어차피 Knight만 받는 함수라면 굳이 템플릿으로 만들어서 사용할 이유가있는건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 관련...
안녕하세요 항상 좋은 강의를 해주셔서 감사합니다 1. 다름이 아니라, push,pop 관련 연습을 하던 중 push 378 pop rax PRINT_DEC 1, ax를 시도하였습니다. 378을 프로그래머용 계산기로 비트 전환을 하면 1 0111 1010으로 되어서 1바이트 크기를 초과하게 되어버리기 때문에 ax를 1바이트 크기로 출력하라는 해당 명령이 오류가 날 줄 알았지만 정상적으로 378 출력이 되었습니다....왜 이런 것인지 궁금합니다 2. push 1 push 2 push 3 pop rax pop rbx pop rcx를 디버그할 때 memory 항목의 변수를 8 간격으로(38,30,28,20) 나누신 이유와 그리고 push 1을 할 때 스택 메모리가 1을 8바이트로 인식한다고 하신 이유가 궁금합니다 감사합니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수 객체 사용하는 이유..?
MoveTask task; task._playerId = 100; task._posX = 5; task._posY - 0; //나중에 여유 될때 일을 실행한다. task(); 라고 예시를 들어주셨는데 마지막에 task가 아닌 task.Move() 함수를 이렇게 호출 시켜주는거랑 오버로딩한 task()를 실행시켜주는거랑 어셈블리어로 봐도 동일하게 동작하는데 나중에 여유 될때 일을 실행한다. 라는 주석을 달면서 task를 실행하셨는데 그냥 저런 상황일때 함수 객체를 사용한다는걸 설명하기 위함이었는지.. 예시로 드신문법 자체도 기다렸다 일을 실행한다는 느낌으로 실행이되는건지... 궁금합니다 ! 그냥 넘어가도 된다 하셔서 웬만하면 그냥 넘어가려고했는데 진짜 뭔지 감도 안잡혀서 질문남깁니다...
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
add [num], byte 1 관련...
안녕하세요 다름이 아니라, add [num], byte 1에서 1 앞에 byte를 붙여야 하는 이유가 상수를 1바이트짜리 바구니에 넣어야 할 때 그 숫자를 1바이트 숫자로 인식해야 하기 때문이라고 말씀하셨는데 al과 [num] 모두 1바이트짜리 바구니(레지스터는 고정된 바구니?)인데 [num]의 경우에만 byte를 붙이는 이유가 있을지 궁금합니다...
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
srand 랜덤 시드 질문
안녕하세요! 간단한 질문입니다! srand를 통해 랜덤 시드를 설정하셨는데 지난번 수업에서는 srand가 메인 함수에 있던데 이번 수업에서는 srand가 새로운 함수에 포함되어 있네요! 어디에 선언하든 상관 없는 것인가요? 명강의 매우 잘 보고 있습니다 감사합니다 ㅎㅎ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문자열 작성시 배열에 할당하는 이유가 궁금해요
문자열을 데이터를 할당할 때 char형 배열을 선언하고 출력하는데 왜 배열을 할당해야 하는지 궁금해요 배열에 할당된 문자열은 나중에 배열 인덱스로 접근할 수 있는건가요? 만약에 가능하다고 해도 문자열 자체를 배열 인덱스로 접근해서 사용 할 일은 그렇게 많지 않을 것 같은데 왜 배열에 할당을 하는지 잘 받아들여 지지가 않습니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
산술 shift와 최상위 비트 관련
산술 shift에서 최상위 비트는 그대로 유지가 된다고 알고 있는데 0x 1001 0100(-108)과 0x 0100 0100(68)에서 각각 left shift 1을 하면 0x 0010 1000(40)과, 0x 1000 1000(-120)으로 최상위비트가 변경이 되는데 왜 이러는 것인지 궁금합니다... 최상위 비트 유지는 right shift에 한해서만 되는 것인가요? p.s. 사칙연산 강의 관련한 내용이지만 add [num], byte 1에서 resb로 이미 설정을 했음에도 resb는 데이터를 할당할 때 내린 명령이라 1에 byte를 붙여야 된다고 말씀하셨는데 resb로 설정된 것은 num인데 1과 resb 사이에 어떤 연관이 있는 것인지 궁금합니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
복사 대입 연산자, 복사 생성자 질문입니다.
Knight& operator=(const Knight& knight){} 복사 대입 연산자에서 반환 타입이 참조인 이유는 그냥 Knight로 반환하면 임시 객체가 생성되어서 그것을 방지하기 위해 참조로 반환하는 것이 맞나요?? 그리고 Knight knight2 = knight1; Knight knight3(knight1); 둘 다 복사 생성자를 호출하는데, 혹시 둘의 차이가 있나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
virtual 소멸자에 대해 궁금한게 있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 소멸자에 virtual을 하고 난 이후에는 왜 Armor 또는 Weapon 소멸자랑 Item 소멸자가 같이 나타나나요? ~Armor 또는 ~Weapon 까지는 알겠는데 Item 소멸자가 나타나는 이유를 잘 모르겠습니다 C++언어를 처음 배우는 것이라 미숙한점 죄송합니다.. ㅠㅠ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
저도 레지스터를 열어보고 싶습니다.ㅠㅠ
일단 엄청난 뉴비입니다..ㅠㅠ 별것 아닌것 같아보이는데 구글링을 아무리 해봐도 해결이 안되서 질문드립니다. 저도 레지스터와 메모리를 SASM에서 변수를 찾아보고 싶은데 (선생님 강의 초반부 레지스터쪽) SASM에서 show memory, show register 부분이 활성화가 안되어있습니다. SASM에서 한줄 한줄 디버깅을 하는것도 안됩니다. (구글링 해보니 이게 해결되면 show memory , show register가 활성화 될것 같더라구요.) 디버그를 누르면 소스코드 처음부터 끝까지 디버그 하고 끝났다고 표시됩니다. LG 그램 , 윈도우 10 사용자에요. 사진 한장 남깁니다. 강의 진도 나가고 싶은데 따라할 수가 없어서 슬퍼요.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
클래스의 "this"와 관련해 질문이 있습니다.
this 문법과 관련해 어셈블리어를 공부하다가 도저히 이해가 안 되는 부분이 있어 질문드립니다. 수업에 나온 class Knight 를 똑같이 만들고, 아래의 맴버 함수를 디버깅했습니다. void Knight::Move(int x, int y) { _posX = x; _posY = y; } 그러면 아래와 같은 어셈블리어가 나옵니다. ecx 레지스터에 있던 클래스의 포인터를 dword ptr [this] 바구니에 저장(mov) 하고, 이 this 바구니에 있는 값(포인터)을 이용해 맴버 변수의 값을 변경하는 것은 이해했습니다. 그런데 this 바구니의 위치와 그 안에 있는 값을 확인하려고 조사식에서 위치를 검색했는데, 아래와 같은 오류가 출력됩니다. 마치 this 라는 바구니가 없는 것처럼 동작하길래, 최대한 구글링을 해서 비슷한 질문을 한 사이트를 발견했는데 여전히 이해가 안 가는 부분이 생깁니다. https://stackoverflow.com/questions/16585562/where-is-the-this-pointer-stored-in-computer-memory 최대한 영어를 이해한 바로는, this는 변수가 아니라 계산식?(expression), 그러니까 포인터 값 그 자체이기 때문에, 상수1에 대해 &1 연산을 할 수 없는 것처럼, this도 메모리를 알아낼 수 없다고 이해했습니다. 하지만 그렇다고 하기엔 어셈블리어 코드에서는 마치 this 라는 공간이 있고, 여기에 어떤 값을 집어 넣거나 빼는 것으로 동작하고 있지 않나요? mov dword ptr[this], ecx mov eax, dword ptr[this] this가 메모리를 차지하고 있지 않다는데, 왜 어셈블리어에서는 메모리에 있는 것처럼 표현되고 있는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
궁금한게 있는데 vs 언어팩은 보통 한글을 쓰나요 영어를 쓰나요?
기존엔 영어를 못하기도 해서 한글을 사용했는데다른 외부라이브러리를 사용하는걸 보고따라하려고 해보니까vs를 한글팩으로 사용하면 오류가 뜨더라구요그래서 영어팩으로 바꿔서 사용하는데 좀 어색하더라구요그러다보니 궁금한게현업에선 vs를 사용할떄 영어로 사용하시나요??지금이라도 영어로 사용하는걸 익숙해져야 하나요??
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 관련...
안녕하세요 이번 강의를 듣다가 궁금한 점이 있습니다 1. section .bss에서 변수를 선언할 때는 변수이름 크기 개수로 해야 한다고 하셨었는데 그렇다면 e resb 8과 e resq 1은 동일한 의미인가요? 2. mov [a], byte 0x55에서 byte를 써줘야되는 이유는 상수를 넣을 때 크기를 맞춰줘야하기 때문이라고 하셨는데 mov [a] byte 0x0055 mov [a] word 0x66 으로 고쳐서 실행했는데도 정상적으로 작동이 되었는데 크기를 맞춰줘야 한다는 게 정확히 어떤 의미인지가 궁금합니다 3. 마지막으로 16진수 숫자 2개를 합하면 1바이트를 쓰게 된다고 하셨었는데 무슨 뜻인지 이해가 잘 가지 않습니다 항상 좋은 강의 감사합니다!
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
구조체랑 배열
안녕하세요 오늘 배열까지 배우고 가지고 있는 의문점에 대해서 질문 드립니다.간단히 예시 코드를 만들어 주석으로 질문을 달았습니다. #include <iostream> using namespace std; int arr[10]; int arr_two[10]; struct Test { int arr[10]; }; int main() { arr[0] = 'h'; // 식이 수정할 수 없는 lvaule라 대입 할수 없음. //arr_two = arr; Test one, two; one.arr[0] = 'h'; // 반면에 구조체의 경우, 구조체 내에 배열을 포함해도 값복사가 이루어 짐. two = one; // 구조체를 단순히 변수들의 묶음이라 생각하면 이해가 안됨. } 아직 어셈블리 분석을 잘 못해서 잘 이해가 안갑니다..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
부동소수점 지수에 관한건데
단 지수는 unsigned byte라고 가정하고 숫자 + 127 을 만들어주는 이유는 혹시라도 지수가 커질 것을 대비해 254를 더하는 것이 아닌 그의 반절 127을 더하는 것으로 이해하면 될까요? 그리고 double의 지수 부분에 대해서 궁금한게 있는데 float가 지수부분이 8이라서 1바이트라면 double의 지수는 11인데 몇바이트로 계산하는 것이 아닌 11비트로 계산하면 되는 걸까요? 제가 이해한게 맞는지 궁금합니다
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
이해한게 맞는지 더 알아야 될게 있는 건지 궁금합니다
영상에서 포인터와 배열의 차이점을 제가 받아들인대로 설명하면 포인터의 경우 문자열의 첫번째 주소만을 담는다. 따라서 어떤 문자열을 담던지 용량은 고정이다. 배열의 경우 모든 문자열을 한글자씩 다 각 바구니안에 담아준다. 따라서 문자열에 따라 용량이 커질수도 있고 작아질 수도있다. 포인터와의 공통점은 배열도 포인터처럼 첫번째 주소를 알수 있기 때문에 포인터처럼도 사용할 수 있다. 정리 공통점 : 둘 다 첫번째 주소를 이용해 데이터를 다룰 수 있다. 차이점 : 포인터는 고정용량, 배열은 가변용량 이렇게 이해하는게 맞을까요?? 추가로 뭔가 잘못알고 있거나 더 이해해야 할게 있으면 알려주세요! 감사합니다