본문 바로가기

programing150

포인터 - void 포인터 > void포인터는 무엇이든 받을 수 있다 > 하지만 void포인터로 delete를 사용하면 소멸자가 호출이 안됨 > 또한 포인터 연산도 할 수 없다. > 상속 구조의 업 캐스팅과는 다르니 주의 해야 함 > 일단 주소값에 의미를 두고 자료값은 나중에 생각하는 개념 - 포인터 연산 > 포인터 자료형에 따라 연산이 된다 > 1을 더했을 경우 그 자료형 만큼 포인터를 이동하게 된다 > 하지만 void 포인터 같은 경우 크기가 없다고 취급하는지 연산을 할 수 없다. > 일반적으로 포인터로 1byte 연산하려면 BYTE* 나 char*를... > char* 같은 경우 VS에서 디버깅할 때 문자열 데이터인 경우 문자열을 보여주니 편하다. 2017. 2. 17.
ECONNRESET UDP 통신 중 보낸 패킷이 안받아지길래 WSAGetLastError()로 보니 WSAECONNRESET에러만 뜬다 일반적으로 econnreset은 connection reset by peer의 의미로 상대방에서 일방적인 종료를 하는 것을 의미한다. 상대방에서 Half-close 이후 read나 write를 하게 되면 이 에러가 뜬다 - MSDN 설명 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다. 이 문제는 일반적으로 원격 호스트의 피어 응용 프로그램이 갑자기 중지되거나 호스트가 재부팅되거나 호스트 또는 원격 네트워크 인터페이스가 사용되지 않거나 원격 호스트가 Hard(Half) Close를 하는 경우에 발생합니다 (원격에서 SO_LINGER 옵션에 대한 자세한 내용은 setsockopt 참조) 소.. 2017. 2. 13.
DLL 사용시 내부 함수 목록 확인 및 lib 생성, 명시적 연결 - dll 내부 함수 목록 확인 > Visual Studio에서 TOOLS 메뉴의 Visual Studio Command Prompt 실행 > dumpbin /export [라이브러리].dll > dll의 내부 함수 목록을 알 수 있음 - dll 내부 함수 목록으로 lib 생성하기 > def 파일 생성 및 dumpbin에서 얻은 목록 작성 LIBRARY [라이브러리].dll EXPORT Func1 Func2 ... > lib /def:[라이브러리].def /machine:x86 > 생성됨 https://msdn.microsoft.com/ko-kr/library/d91k01sh.aspx - def 파일을 프로젝트 설정->링커->입력->모듈정의파일에 설정하면 알아서 만들어짐 cf. __declspec()은 .. 2017. 2. 1.
Singletone Template // #pragma once template class CSingletone { private: static T* m_pInstance;public: static T* GetInstance(); static void Release();protected: CSingletone() {} virtual ~CSingletone() {}};template T* CSingletone::m_pInstance = nullptr;template T* CSingletone::GetInstance() { if (m_pInstance == nullptr) m_pInstance = new T; return m_pInstance; }template void CSingletone::Release() { if (m_pInstance.. 2017. 2. 1.