목록C++ 나만의 복습 (43)
그냥 게임개발자

짜잔 메모리구조입니다. 귀엽죠 뭔가 알록달록 무지개 같음 위에서부터 스택(stack), 힙(heap), 데이터 영역(BSS segment, Data segment), 코드 영역(code segment)으로 나눠진다. 스택 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정된다. 그러나 함수가 함수를 호출하는(재귀함수) 등 따라 런타임시에도 크기가 변경된다 힙 힙은 동적 할당할 때 사용되며 런타임 시에 크기가 결정이 된다. 데이터 영역 BSS 영역과 Data 영역으로 나뉘고 정적할당에 관한 부분을 담당한다. [정적인 특징] 코드 영역 : 소스코드 들어감 [정적인 특징] 정적할당 정적할당은 컴파일단계에서 메모리를 할당하는 것을 말한다. BSS segment와 Data segment, code / ..

소문자로 된 문자를 숫자로 바꾸는 로직이 필요하면 어떻게 해야할까? ASCII코드를 사용하면 된다. A = 65 Z = 90 a = 97 z = 122 이렇게 가지고 있다. a부터 시작해 z부터 입력을 받으면 이를 정수 0~25까지 표현하고싶다. 그렇다면 아래와 같다. #include using namespace std; int main() { char a = 'a'; cout

배열 중에서 아래와 같은 배열이 있다. [1, 1, 2, 2, 3, 3] 그럼 이 중에서 중복된 것들을 삭제하는 것은 어떻게 할까? 첫번째 방법은 map이다. 간단하게 map을 사용해서 할 수 있다. map에 1이라는 key를 넣고 value를 할당한다. 그러면 다음 1은 continue 할수가 있고 이런 식으로 하나의 map에 중복된 것들을 삭제하고 오름차순으로 나열 할 수 있다. 그럼 코드로 한 번 확인해보자. #include #include #include using namespace std; map mp; int main() { vector v{1, 1, 2, 2, 3, 3}; for (int i : v) { if (mp[i]) continue; else mp[i] = 1; } vector ret..

역참조 연산자라는 것은 #include using namespace std; int main() { int a = 10; int* b = &a; cout

포인터란? 0x00000..... 같은 주소를 담는 타입이 포인터다. 주소를 담는 타입 adress를 담는 Type int는 정수를 담지요? float는 실수를 담지요? pointer는 주소를 담는다 그것도 첫번째 바이트 주소를 가리킨다. 예를 들자 여기서 int라는 타입을 선언하게되면 메모리에 이렇게 담기게 된다. 그렇다면 int*는 무엇을 담는 것인가? 지금 int라는 타입을 처음 메모리에 할당할 때 처음 주소는 0x000000이다. 그렇게 해서 0x000000 ~ 0x000003까지 사용하는 것이다. 그러면 int*는 0x000000을 담는 즉 첫번째 byte주소를 담는 타입이다. 또한 포인터는 메모리 동적할당, 데이터를 복사하지 않으며 함수 매개변수로 사용, 클래스 및 구조체를 연결할 때 사용이 ..

auto는 C#의 var와 같다. 타입 추론을 하여 결정되는 타입이다. #include using namespace std; int a = 1; auto b = 1; int main() { cout

pair와 tuple은 자료구조가 아니지만 C++에서 제공하는 utility라는 라이브러리의 템플릿 클래스이다. 또한 자주사용 되기에 복습해보았다. pair pair는 first와 second라는 멤버변수를 가지는 클래스이며 두 가지 값을 담아야 할 때 쓴다. tuple tuple은 세가지 이상의 값을 담을 때 쓰는 클래스이다. #include #include #include using namespace std; pair pi; tuple tl; int a, b, c; int main() { pi = {1, 2}; tl = make_tuple(1, 2, 3); tie(a, b) = pi; cout