목록전체 글 (253)
bdfgdfg
세션 A의 작업이 완료 큐에 남아있을 때 세션을 삭제하면 어떻게 될까. 나는 WSARecv,WSASend를 소켓 대상으로 했을 때 WSAGetLastError가 PENDING이 아니라면 바로 세션을 끊어버렸었다. 여기서의 문제는 세션이 가르키는 힙 메모리 영역의 메모리는 지워졌지만, Session이 그 메모리를 가리키는 주소 값은 삭제를 할 당시에 nullptr로 밀어도 원래 가리키던 주소 값으로 반환해준다. -> CP객체에 소켓과 완료키를 등록할 때 복사를 하는 방식인듯하다. 심지어 GQCS함수의 return값도 true, transferrbytes도 완료가 되었을 때의 송수신된 바이트가 기록되어있고 overlapped도 살아있다. 그렇기에 일반적인 체크로는 Session의 연결을 끊어버렸을 때 위와 ..
아래의 값은 컴파일러에 의해서 세팅되는 메모리 값입니다. (*가급적 모든 변수/메모리는 반드시 초기화하는 습관을 가지는것이 제일 듯합니다.) - 64 bits [초기화 되지 않은 지역변수] 0xCCCCCCCCCCCCCCCC [초기화 되지 않은 Heap 메모리] 0xCDCDCDCDCDCDCDCD [Free된 Heap 메모리] 0xDDDDDDDDDDDDDDDD or 0xFEEEFEEEFEEEFEEE [할당된 Heap 메모리를 벗어난 공간] 0xFDFDFDFDFDFDFDFD - 32 bits [초기화 되지 않은 지역변수] 0xCCCCCCCC [초기화 되지 않은 Heap 메모리] 0xCDCDCDCD [Free된 Heap 메모리] 0xDDDDDDDD or 0xFEEEFEEE [할당된 Heap 메모리를 벗어난 공간..
캐스팅(형변환) - 하나의 데이터형을 다른 데이터형으로 변환하는 것. 기존의 C스타일의 형변환은 밑과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Test { private: int m_test = 10; }; int main() { int a = 5; long long b = a; // 묵시적 형변환. 컴파일러가 형을 변환해준다. // -> 형변환이 허용되며 프로그래머가 명시적으로 형변환을 안한경우. Test* t = (Test*)&a; // 명시적 형변환. 프로그래머가 형변환을 위한 코드를 직접 작성. return 0; } Colored by Color Scripter cs C++스타일의 형변환 연산자는 4가지가 존재한다. 1. static_cast 2. rein..