월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
엔디안 질문 드립니다
공부하던 도중에 메모리에 적재되는 순서가 이상한 거 같아서 만들어서 확인해봤습니다.확인 결과 4바이트는 순서가 정확한데 8바이트로 한번에 읽을 때 왜 저런 형태가 되는 지 궁금합니다.추가로 item 구조체에 num값과 m 값을 메모리에 적재할 때 0x0000 0003 / 0x0000 0001 이렇게 적재 됐는데 리틀 엔디안에 의하면 03 00 0000 / 01 00 0000 으로 표기돼야하는 거 아닌가 싶은데 제가 무엇을 잘못 이해하고 있는 걸까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
endl 과 \n 속도 차이 확인 중 질문
const int MILLS = 1000000;int main(){ DWORD dwStart1 = GetTickCount(); for (int i = 0; i <= MILLS; ++i) cout << "h" << '\n'; DWORD dwEnd1 = GetTickCount(); DWORD dwStart2 = GetTickCount(); for (int i = 0; i <= MILLS; ++i) cout << "h\n"; DWORD dwEnd2 = GetTickCount(); DWORD dwStart3 = GetTickCount(); for (int i = 0; i <= MILLS; ++i) cout << "h" << endl; DWORD dwEnd3 = GetTickCount(); cout << dwStart1 << ' ' << dwEnd1 << ' ' << dwEnd1 - dwStart1 << '\n'; cout << dwStart2 << ' ' << dwEnd2 << ' ' << dwEnd2 - dwStart2 << '\n'; cout << dwStart3 << ' ' << dwEnd3 << ' ' << dwEnd3 - dwStart3 << '\n';} 갑자기 궁금해서 endl 이랑 \n 속도 차이 확인해보고자 어셈블리어 확인하고 결과 값도 확인했습니다. 2번 결과가 왜 빠른지는 어셈블리어 확인하면서 << 연산자 때문이라는 것도 알았습니다. 최종적으로 1번과 3번이 큰 차이는 안나지만 대체로 1번이 더 느리던데 왜 그런가요? 검색해본 결과는 flush 차이로 \n이 더 빠르다고 하지만 반대의 결과가 나와서 궁금합니다. (어셈블리어로 확인해보려 했으나 ??로 채워진 부분도 있어 알아보기 어렵고 같은 for문에서도 어셈블리어가 다르게 적용 돼 있습니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
class에서 initialize_list Constructor 왜사용하나요?
Test라는 클래스가 있을 때 Test의 ㅑinitialize_list를 인자로받는 생성자를 왜 사용하는 것인가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수가 끝나는 시점에서 크래쉬가 나요!
#include <iostream> using namespace std; #include <list> //양방향 리스트, 링크드 리스트. template<class T> class Node { public: Node() : _next(nullptr), _prev(nullptr), _data(T()) { } Node(const T& value) : _next(nullptr), _prev(nullptr), _data(value) { } public: Node* _next; Node* _prev; T _data; }; template<class T> class Iterator { public: Iterator() : _node(nullptr) { } Iterator(Node<T>* data) : _node(data) { } Iterator<T>& operator++() { _node = _node->_next; return *this; } Iterator<T> operator++(int) { Iterator<T> temp = *this; _node = _node->_next; return temp; } Iterator<T>& operator--() { _node = _node->_prev; return *this; } Iterator<T> operator--(int) { Iterator<T> temp = *this; _node = _node->_prev; return temp; } T& operator*() { return _node->_data; } bool operator==(const Iterator& right) { return _node == right._node; } bool operator!=(const Iterator& right) { return !(*this == right); } public: Node<T>* _node; }; //[1]->[2]->[3]->[4]->[header]가 빈 깡통이어도 기본 template<class T> class List { public: typedef Iterator<T> iterator; List() :_size(0) { _header = new Node<T>(); _header->_next = _header; _header->_prev = _header; } ~List() { //TODO while (_size > 0) pop_back(); delete _header; } void push_back(const T& value) { AddNode(_header, value); } // [1] <-> [2] <-> 3 <->[header] // [1] <-> [2] <-> [ header ] void pop_back() { RemoveNode(_header->_prev); } iterator insert(iterator iter, T _data) { return iterator(AddNode(iter._node, _data)); } iterator erase(iterator iter) { Node<T>* target = RemoveNode(iter._node); return iterator(target); } private: Node<T>* AddNode(Node<T>* before, const int& value) { Node<T>* newNode = new Node<T>(value); Node<T>* prevNode = before->_prev; prevNode->_next = newNode; newNode->_next = before; before->_prev = newNode; newNode->_prev = prevNode; ++_size; return newNode; } Node<T>* RemoveNode(Node<T>* target) { Node<T>* prevNode = target->_prev; Node<T>* nextNode = target->_next; prevNode->_next = nextNode; nextNode->_prev = prevNode; --_size; delete target; return nextNode; } public: iterator begin() { return iterator(_header->_next); } iterator end() { return iterator(_header); } int size() { return _size; } public: Node<T>* _header; int _size; }; template<class T> void test(T); int main() { /*List<int> li; List<int>::iterator eraseIt; for (int i = 0; i < 10; i++) { if (i == 5) { eraseIt = li.insert(li.end(), i); } else { li.push_back(i); } } li.pop_back(); li.erase(eraseIt); for (auto i = li.begin(); i != li.end(); ++i) { cout << *i << endl; }*/ test(List<int>()); } template<class T> void test(T) { T li; T::template iterator eraseIt; for (int i = 0; i < 10; i++) { if (i == 5) { eraseIt = li.insert(li.end(), i); } else { li.push_back(i); } } li.pop_back(); li.erase(eraseIt); for (auto i = li.begin(); i != li.end(); ++i) { cout << *i << endl; } } 해당 코드에서 main에서 주석으로 처리한 부분은 잘 되는데 template로 작성한 펑션이 끝나면 Invalid address specified to RtlValidateHeap 크래쉬가 나는데 이유가 궁금합니다.. ㅠ
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
list #2 2:40~ 임의접근
안녕하십니까! 강의 정말 잘 듣고 있습니다!다름이 아니라 list의 임의 접근 문법이 막힌 이유에서 속도차이에 대해서 뭔가 팍!하고 와닿지 않아 질문드립니다.vector같은 경우 '연속된'주소에 데이터가 저장되기 때문에 n번째 데이터는 ++연산으로 '바로 옆주소' 로 이동하여 찾는다. 그렇기 때문에 비교적 빠르게 찾을 수 있다.하지만 list의 경우 연속되지 않는 다른 어딘가에 다음 값을 저장하고 그 주소로 가는 주소값을 들고 있는데 vector와는 다르게 일일이 '주소값을 타고 워프'를 해줘야하기 때문에 시간이 많이 걸린다. 라고 이해를 했지만 위 두 경우의 속도 차이가 문법을 막을 만큼 차이가 어마어마하게 나는 건가요?!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
데이터 크기 질문
강의 15분 쯤 내용에서 질문 있습니다.변수 a의 주소에서 1바이트 더한 위치에 b의 주소가 있을거라고 하시면서 a 주소에다가 1을 더하셨는데, 1만 저하면 1bit가 더해진 거 아닌가요? 1바이트를 더하는건데 왜 1만 더하는건지 이해가 안됩니다 ㅠㅠ
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
예외가 throw됨: 쓰기 액세스 위반입니다. this->_data이(가) 0x1110112였습니다.
계속 제목과 같은 오류가 뜹니다 ㅠㅠ 살려주세요..#include <iostream> #include <vector> using namespace std; // vector를 만들어보자 template<typename T> class Vector { public: Vector() : _data(nullptr), _size(0), _capacity(0) { } ~Vector() { if (_data) delete[] _data; } // [ ] void push_back(const T& val) { if (_size == _capacity) { //증설 작업 int newCapacity = static_cast<int>(_capacity * 1.5); //실수에서 int로 변환하면 데이터가 잘릴수도있다 if (newCapacity == _capacity) newCapacity++; reserve(newCapacity); } // [1][2][3][] _data[_size] = val; //데이터 개수 증가 _size++; } void reserve(int capacity) { _capacity = capacity; T* newData = new T[_capacity]; //데이터 복사 for (int i = 0; i < _size; i++) { newData[i] = _data[i]; //기존에 있던 데이터를 날린다 if (_data) delete[] _data; // 교체 _data = newData; } } T& operator[](const int pos) { //레퍼런스로 만들어야 데이터를 넣을 수 있음 return _data[pos]; } int size() { return _size; } int capacity() { return _capacity; } private: T* _data; int _size; int _capacity; }; int main() { Vector<int> v; //v.reserve(100); for (int i = 0; i < 100; i++) { v.push_back(i); cout << v.size() << " " << v.capacity() << endl; } for (int i = 0; i < v.size(); i++) { cout << v[i] << endl; } cout << "-----------------" << endl; // // for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) // { // cout << (*it) << endl; // } // return 0; }
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수 인자 관련 질문있습니다.
안녕하세요. 이번 연습 문제를 구현하다보니 문득 든 궁금증인데 검색하기가 어려워 질문 남깁니다.이전 시간에 배웠던 내용과는 별개로 함수 인자(매개 변수)에 대한 사용법 관련 질문인데요.. 질문 1) 예시로 CreatePlayer 함수를 구현할 때 반환값으로 구조체를 보내기보단, 매개 변수에 그릇(playerInfo)을 같이 보내 그 그릇에 담는 식을 사용하셨는데 이러한 이유가 있을까요? (개인의 스타일인지.. 아니면 반환값으로 보내는 것보다 더 효율적인건지..이유가 궁금합니더..) 질문 2) 함수를 만들 때 반환값을 지정해줘야 하는 경우는 알잘딱 해야하는 부분일까요? 아니면 지정된 암묵적인 룰?같은 것이 있을까요?(질문 1같은 상황이 발생했을 때 어떠한 기준으로 판단을 지어야 하는지 궁금합니다..) 함수를 만들 때 판단이 잘 서지않아 이게 경험 차이 때문인지 아니면 진짜 그냥 헷갈리는건지 구분이 안 서서 질문드립니당 ㅠ.ㅠ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
순수 가상 함수
안녕하세요! 좋은 강의 항상 감사합니다!이번 수업에서 순수 가상 함수 내용을 다 듣고 나니, 예전에 배운 c# 인터페이스와 비슷하다는 생각을 하게 되었습니다. 그래서 실제로 c# 인터페이스와 순수 가상 함수의 동작이 비슷한 방식으로 하는지, 다르다면 어떤 차이점이 있는지 궁금합니다!( 궁금한 이유는 유니티에서 c# 인터페이스로 구현했던 부분을 c++에서는 순수 가상 함수로 구현을 하면 괜찮을 것 같다고 생각이 들었습니다. )
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
캐시 메모리에 대해 질문드립니다.
메모리에서 레지스터로 데이터를 가져갈 때예를 들어 mov rax,10 << 이런 식의 코드일 때렘 메모리에서 캐시 메모리를 거치지 않고 바로 레지스터로 데이터를 복사해서 넣는건가요?아니면 캐시 메모리에서 레지스터로 데이터가 복사되는건지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
temp 주소값 push 시 질문 있습니다.
안녕하세요. 대략적인 진행 방식은 어느정도 이해가 된 것 같습니다. 그런데 지역변수(temp) 할당 시에 매개변수에(&temp)값이 들어가는 부분을 도저히 찾을 수가 없네요 ㅠㅠ혹시 CreatePlayer가 호출되기 전 push eax 부분이 매개변수까지 동시에 지정이 된다는 뜻일까요?? 나머지 부분은 반복 학습을 하니 이해가 가는데 임시 저장소 생성시점만 이해가 가질 않습니다 ㅠㅠ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
ret 질문입니다
mov eax, 11mov ebx,10call MAX; PRINT_DEC 4, ecx; NEWLINE xor rax, raxret PRINT_MSG:PRINT_STRING msgNEWLINEret MAX:cmp eax, ebxjg L1mov ecx, ebxjmp L2 L1:mov ecx, eax L2:PRINT_DEC 4, ecxNEWLINE L2에 ret을 넣지 않았는데 값은 제대로 나옵니다문제 되는 게 있을까요?그리고 ret은 단순히 함수의 끝을 나타내는 건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수객체 만드실때 포인터로 만드신 이유가 있을까요?
함수객체쪽 예제주실때 포인터를 참조로 바꾸어봤는데요.(주신예제를 간단하게)이렇게하니 실행은되는데 FindItem 아래쪽 return에서 nullptr이 에러가 나는데그 이유를 잘 모르겠고, 참조와 포인터중에 포인터를 쓰신 이유가 궁금해서 남깁니다!!
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
루키즈님 강의로 클라이언트 취업이 가능할까요?
현재[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈]C++프로그래밍 입문게임 수학과 DirectX12자료구조와 알고리즘위 3가지 강의를 듣는 중인데, 여기에 추가로 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] 이 강의를 듣고 유니티쪽으로 빠르게 취업이 가능할까요? 좋은 회사를 노리진 않고 일단 빠르게 취업하는 것을 목표로 두고 있어서요. 위 유니티 강의 하나로, 포트폴리오나 관련된 것들을 준비하는 건 좀 부족할까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
빌드, 컴파일 전혀 문제 없고 코드 상으로도 문제 없는 부분에 자꾸 빨간 줄이 뜹니다 ㅠㅠ
#pragma region을 쓴 이후부터 계속 이런식인데..위에 flag변수 선언된 상태고 빌드, 결과도 이상없이 나오는데 이상하게 저런 빨간 줄이 생깁니다. 어디 찾아보니 소스코드에서 다시확인으로 파일이랑 솔루션 다시 확인해보래서 했는데 그 방법 써도 안고쳐지네요...ㅠㅠ 코드 문제는 아니지만 자꾸 보이고 오류에 떠서 신경 쓰이고 나중에도 계속 이러면 헷갈릴 것 같아서 질문 남깁니다.어떻게 해야 고쳐질까요..?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
마지막 문제 질문입니다.
강의에서처럼 문제가 되는 부분을 통으로 날려주면hp가 0이 되어 죽었는데도 계속 출력하는게 마음에 안들어서,그냥 단순히 knight 가 nullptr일 때는 AttckTarget()이 실행되지 않도록 바꿨는데요,이렇게 하니 제가 의도했던 대로 되었는데, 이 경우에 문제가 생길 여지가 있을까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
exercise8 질문드립니다.
pet의 주소값을 전혀 사용하지 않도록 main 함수 내부의 Pet pet; 는 그대로 두고 _pet(nullptr)을 사용하여 이렇게 코드를 짰습니다.new 랑 delete가 각자 다른 cpp 파일에 있으면 나중에 헷갈리지 않을까? 해서 저렇게 했는데,이렇게 코드를 짜도 문제가 없는게 맞을까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
c++강의 등록 1강부터 문제가 발생했습니다. ㅠ
%include "io64.inc" section .textglobal CMAINCMAIN:;write your code here PRINT_STRING msg xor rax, raxret section .datamsg db 'Hello World', 0x00ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡBuild started...Unable to start assembler. check your settings. 지금 첫 수업인 헬로우 월드를 치고 진행하면 저렇게 셋팅 오류가 출력됩니다.구글링을 해봤는대 세팅 하는곳에 -g를 추가해서 실행하면 된다고 되어있는대, 똑같이 진행해도 실행이 되지 않습니다. 아래는 현재 저의 빌드 세팅 내용입니다.무엇이 문제인걸까요? 첫 수업부터 막히네요 ㅜㅜ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
show memory에 값이 안올라옵니다.
show memory가 공란으로 나옵니다 왜 일까요...
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
지난번에 만든 달팽이 코드를 따로 h 및 cpp파일로 빼고싶은데요,
이렇게 했는데, 계속 오류가 뜹니다int, enum,struct를 여기저기 옮겨봐도 도저히 오류가 해결되지 않고, 검색을 해봐도 관련 정보가 나오질 않는데 어떻게 해결하나요?