전체 글 (231) 썸네일형 리스트형 C++에서의 메모리 관리 방식 C++ 에서는 사용자가 직접 메모리 관리가 가능하다. 기본적으로 new와 delete 키워드를 이용한다. new 를 통해 힙 메모리 영역에 데이터를 할당한다. int* ptr;ptr = new int;* 은 포인터로 주소를 담는 변수이다. 이 주소를 담는 변수는 스택에 저장된다. 그리고 변수의 값으로는 힙 메모리 영역의 주소가 담긴다.사용이 끝난 포인터는 delete 를 사용하여 해제한다.int* ptr = new int;delete ptr; 메모리 누수할당했던 메모리를 제대로 해제하지 않으면 발생한다. 시간이 지날수록 점차 메모리 사용량이 많아지며 문제 발견 및 해결이 쉽지 않다.프로파일러나 메모리 디버깅을 통해 메모리 누수를 확인 가능하다.참조 카운팅 기법을 통해 예방할 수 있다.스마트 포인터를 사.. 2장 인터넷 - 정리 패킷 스위칭서킷 스위칭을 대체할 신기술로 나온 스위칭 기법이다.서킷 스위칭은 정보 송수신 간에 회로 연결을 통해 연결을 유지하였다. 이는, 회선을 한 번에 하나의 통신 전용으로 사용해야 했기 때문에 가용성이 좋지 못했다. 패킷 스위치은 회선은 공유하되, 송수신 내용을 패킷이라는 단위로 나누어 저장 후 전달 절차를 사용해 보내는 기법이다.각각의 데이터들이 패킷으로 묶여있기 때문에 여러명이 동시에 데이터를 수신할 수 있다. 이러한 패킷 스위칭을 구체화한 프로토콜이 점점 거대화되며 오늘날 인터네의 일부가 되었다.(1822 프로토콜)1822 프로토콜은 긴 세월 동안 계속 진화하여 여러 프로토콜의 형태를 띄게 된다. 그리고 이러한 많은 프로토콜들의 집합을 TCP/IP 스택으로 부르게 된다. TCP/IP 스택의 계.. 자료구조란 자료구조의 의미 자료 구조란 효율적인 데이터 접근 및 처리를 위해서 데이터를 관리, 저장하여 표현하는 방법입니다. 알고리즘 혹은 프로그램 설계를 위해서 적절한 자료 구조를 선택함으로써 시간 단축이나 메모리 절약을 할 수 있습니다. 자료 구조의 유형 자료 구조에는 여러 유형들이 있고 그 중 일반적인 자료 구조로는 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등이 있습니다. 해당 자료구조들을 크게 선형 자료구조와 비선형 자료구조로 나눌 수 있습니다. 자료 구조의 분류 자료 구조는 크게 선형 자료구조와 비선형 자료구조나눌 수 있습니다. 선형 자료 구조란 : 데이터가 1:1의 관계로 연결되어 있는 자료 구조를 의미합니다. 선형 자료구조로는 배열, 연결 리스트, 스택, 큐 등이 있습니다. 비선형 자료구조란 :.. 멀티 플레이어 게임 프로그래밍 1장 요약 1.1 로컬 멀티플레이어 게임- 한 대의 컴퓨터에서 2명 이상의 플레이어가 즐기는 게임 1.2 초기 네트워크 멀티플레이어 게임- 직렬 포트로 컴퓨터를 서로 연결하여 플레이하는 방식- 물리적 연결이 필수적이다보니 로컬 네트워킹 형식을 채택하는 경우는 드물었다- 이후, LAN 과 관련한 개념이 나오며 로컬 네트워킹이 주목받게 되었다. 1.3 MUD ( Multi-User Dungeon) 게임- 텍스트 기반으로 여러 플레이어가 같은 가상 공간에 서로 동시에 접속하여 즐기는 형태의 멀티 플레이어 게임- 이후, MMO 로 발전된다. 1.4 LAN- 근거리 통신망, 가까운 지역 내에서 서로 연결된 컴퓨터의 네트워크를 의미한다.- 직렬 포트를 이용한 근거리 통신망- 이더넷을 이용한 근거리 통신망 레이턴시 : 네트워크.. 스택 프레임과 함수 호출 규약 함수 호출 규약은 함수 호출 시에 인자 전달, 반환 값 처리, 스택 프레임 관리 등의 방식을 규정하는 규칙이며, 이러한 규칙에 따라 스택 프레임이 구성된다. 스택 프레임은 함수가 호출될 때 함수 내에서 사용되는 정보들을 저장하는 메모리 영역이다.즉, 함수가 호출되면서 생기는 해당 함수와 관련된 메모리 덩어리가 스택 프레임이며 이러한 스택 프레임은 Stack 영역에 저장된다. 스택 프레임은1. 매개변수를 저장하는 공간2. 로컬변수를 저장하는 공간3. 이전 프레임의 포인터 (이전 스택 프레임의 데이터를 참조하기 위한 포인터이다.)4. 반환 주소 (함수 실행이 끝나면 제어권을 넘길 복귀 주소를 저장한다.)스택 프레임과 함수 호출 규약1. 함수 호출 규약에 의해 함수 호출 시에 함수에 전돨되는 인자들이 어떠한.. 주소 바인딩 주소 바인딩이란?cpu가 프로세스가 포함하는 데이터를 참조하기 위해서는 프로세스가 가지는 논리주소를 물리주소로 변환 할 수 있어야한다. 이 논리주소와 물리주소를 연결시키는 것을 주소 바인딩이라고 한다. 주소 바인딩은 컴파일 타임 바인딩(Compile-time binding), 로드 타임 바인딩(Load-time binding), 런타임 바인딩(Runtime binding)으로 나뉜다. 1. 컴파일 타임 바인딩 컴파일 타임 바인딩은 데이터의 위치가 컴파일 타임에 결정되는 것을 의미한다. 정적인 주소 할당.물리적 메모리 위치를 변경하려면 다시 컴파일해야하는 단점이 있다. 2. 로드 타임 바인딩프로그램이 시작 될 때 데이터의 물리적 위치가 결정되는 바인딩.프로그램이 종료될 때까지 위치가 고정됩니다.이는 메모리.. B-Tree B-트리는 데이터베이스 시스템과 파일 시스템에서 사용되는 자료구조이다.데이터를 효율적으로 관리하기 위해 설계되었다. B-트리의 구조B-트리는 노드 기반의 트리 구조인데, 각각의 노드는 공통된 특징을 가진다. B-트리 노드의 구조1. 키 : 하나 이상의 키를 가진다. 키는 데이터를 정렬하는데 사용된다.2. 자식 포인터 : 노드는 자식 노드를 가리키는 포인터를 가지고 있다. 하나 이상 가질 수 있음. 이때, M차 B-트리의 의미는 각 노드는 자식 노드를 (M~M/2)개 가질 수 있다.각 노드는 키를 M-1 ~ M/2-1 개 가질 수 있다. 노드의 키가 N개이면 자식 노드를 최대 N+1 개 가질 수 있다. B-트리는 균형 트리이기 때문에 각 노드는 최소, 최대한의 키를 가지는 장점이 있다.효율적인 검색 및 .. 재귀 함수 자신을 호출하는 방식으로 동작하는 함수 문제를 더 작은 하위 문제로 분할하여 해결하는 분할 정복 알고리즘에 사용된다. 자기 자신을 호출하기 때문에 특정 상황에서의 종료 조건과 재귀 조건을 가져야한다. 재귀함수의 장점 코드를 간결하게 만든다. 문제를 세분화하여 접근 가능하다. 재귀함수 단점 재귀함수가 호출될 때 마다 스택에 메모리가 할당되어 메모리를 많이 차지할 수 있다. 함수의 호출에 따른 메모리 접근에 의해 오버헤드 비용이 반복문에 비해 더 크다. 재귀 함수를 막 사용하면 함수의 논리 이해가 어려워 질 수 있다. 재귀 함수의 성능 향상을 위한 최적화 종료 및 진입 조건을 설정하여 재귀 호출의 횟수를 조절한다. 재귀 함수 구문의 마지막 부분에서 재귀 호출하여, 스텍 프레임을 재사용하는 방식 메모이제이션 .. 이전 1 ··· 15 16 17 18 19 20 21 ··· 29 다음