목록게임프로그래밍 (83)
bdfgdfg
네트워크 라이브러리를 만들기전 라이브러리를 만드는 방식 2가지를 본다. 1. 정적 라이브러리(Static Library) 정적 라이브러리로 만든 프로젝트의 빌드 결과물은 lib확장자로 만들어진다. 빌드 후 결과물을 보면 위와 같이 실행가능한 파일(exe)이 아닌 lib확장자로 파일이 만들어 진다. 이제 이 정적 라이브러리를 가지고 다른 프로젝트에서 가져다가 쓸 수 있다. 사용하는 방법은 밑과 같다. 1. 프로젝트 속성 -> 링커 탭 -> 일반 탭으로 이동 후 추가 라이브러리 디렉토리에 lib파일이 존재하는 디렉터리의 경로를 넣어준다. 2. 디렉터리 설정이 완료 되었으면 어떤 lib(정적 라이브러리)를 쓸건지 알려줘야 한다. 방법이 2가지. 2-1 프로젝트 속성 -> 링커 탭 -> 입력 탭으로 이동후 추가..
디폴트 기본 복사 생성자 및 복사 대입 연산자를 사용할시에 얕은 복사로 복사가 이루어짐. 깊은 복사와 얕은 복사라는 말이 나온 이유는 클래스의 복사 생성,대입 연산자의 호출에 있어서 메모리 관점에 대한 주의. 간단하게 말하면 얕은 복사는 디폴트 복사 생성자,대입 연사자를 호출하여 복사 대상의 멤버를 복사할 객체의 멤버로 그대로 복사하는 것. 깊은 복사는 사용자가 복사 생성자,대입 연산자를 직접 정의하여 포인터 변수가 가르키는 메모리는 복사하지 않고 새로운 인스턴스를 만들어 복사하는 방식. 참고로 복사 생성자 및 복사 대입 연산자의 호출방식은 - 생성시기 때 같은 타입을 인자로 넣어준다면 복사 생성자를, - 생성시기 때 같은 타입을 대입 연산한다면 복사 생성자를, - 그 이후 일반 상황에서 대입 연산한다면..
malloc과 free는 C언어의 동적 할당 및 해제 함수 - 라이브러리가 제공하는 동적할당 함수. - malloc함수는 동적할당할 메모리의 양을 바이트 단위로 인자에 넘기고 void*를 리턴. (사용할 타입에 맞추어 캐스팅) - 메모리 할당이 목적이므로 생성하자마자 초기화가 불가능. 메모리 할당 후 초기화(대입) (calloc은 0으로 초기화) - C++에서 new/delete는 할당/해제 + 생성자 및 소멸자를 호출. malloc과 free는 오로지 메모리만을 할당/해제. - 할당된 메모리를 realloc을 통해 크기를 바꿀 수 있음. C++의 new는 이러한 기능은 없음. new와 delete는 C++언어의 동적 할당 및 해제 연산자 (오버로딩 가능) - 언어에서 지원하는(문법) 동적할당 연산자 -..
이론은 앞서 두개의 글(하나는 비공개)을 통해 공부했으니 바로 코드 IOCompletionPort.h #pragma once #include "std.h" #define MAX_SOCKBUF 1024 // 패킷(현재는 버퍼)크기 #define MAX_CLIENT 100 // 최대 접속가능한 클라이언트 수 #define MAX_WORKERTHREAD 4 // 쓰레드 풀(CP객체)에 넣을 쓰레드 수 enum class IO_TYPE { IO_RECV, IO_SEND }; // Overlapped 구조체를 확장하여 사용. struct OverlappedEx { WSAOVERLAPPED m_wsaOverlapped; WSABUF m_wsaBuf; char m_dataBuffer[MAX_SOCKBUF]; IO_T..