[MFC쓰레드질문] 쓰레드 파라미터 질문입니다..
세나
2023.04.01
클래스에서 쓰레드를 생성하면서 this 를 파라미터로 보냅니다
그래서 쓰래드에서 형변환을 해서 클래스의 맵버변수에 접근을 하는데 왜 쓰레기값이 나오죠??
void CMyIOCPSocket::init()
{
listClntCount=0; // 클래스 맵버변수
AfxBeginThread(AcceptThread, (LPVOID)this);
}UINT AcceptThread(LPVOID param)
{
CMyIOCPSocket *threadObject = (CMyIOCPSocket *)param; // param 에서 this 를 받아서 클래스 제어
INT temp = threadObject-listClntCount;
}
temp 라는 곳에 0이 안나오고 쓰레기 값이 나옵니다
디버깅을 하면서보니
AfxBeginThread(AcceptThread, (LPVOID)this); 의 this 와
CMyIOCPSocket *threadObject = (CMyIOCPSocket *)param 의 *threadObject 는 값이 같습니다
그럼 같은 객체라는것일텐데...
왜 멤버변수의 값이 틀리게 나오죠...
-
흰우유
넹 감사합니다~
-
바나나
답변 : 실제로 사용하는 다른클래스에서 CMyIOCPSocket의 객체를 생성하고 소멸되어서 값이 쓰레기값이
나오네요..
이거찾느냐고 반나절을 보냈넹....^^