|
수야랍니다. ㅡ,.ㅡ
요몇일 고생하구있는게 클래스에 스래드를 추가해서 돌리는짓을 하고있거든요
물론 안되는건 아니지만 디버깅이라던가 기타 대입에서 엄청난 바보같은짓을하는게 있어서
짐 포기단계입니다.
예를 들어서요 ( 수야 전문 한글 코딩 ㅡ0ㅡ 시작합니다 )
class 수야
{
public:
__fastcall 수야(){};
__fastcall ~수야(){};
void __fastcall 쓰래드돌려();
HANDLE 쓰래드핸들;
DWORD 쓰래드핸들ID;
AnsiString 배열들[];
int 배열Count;
};
이부분이 클래스 해더부분이라치면요
cpp부분은 아래와같습니다.
DWORD WINAPI 쑤래둥(void *쓰래드용수야클래스)
{
수야 *쓰래드수야;
쓰래드수야 = (수야)스래드용수야클래스;
for(쓰래드수야->배열Count = 0; 쓰래드수야->배열Count < 100; 쓰래드수야->배열Count++)
{
쓰래드수야->배열들[쓰래드수야->배열Count] = 아싸;
}
}
void __fastcall 수야::쓰래드돌려()
{
쓰래드핸들 = CreateThread(NULL, 0, 쑤래둥, (void *)this, 0, &쓰래드핸들ID);
if(쓰래드핸들 == NULL)
ShowMessage("아거~ 쓰래두 못맹글오쏘~")
}
일케 돌린다그럼여 저 쓰래드에서여
for문에있는 값에서 엄청난 황당함이 일어나더군요
쓰래드수야->배열들[쓰래드수야->배열Count] = 아싸;
라고하면 쓰래드수야->배열들의 쓰래드수야->배열Count번째에 아싸가 들어가야대잖아요?
그런데 ㅡ0ㅡ 쓰래드수야->배열Count에 아싸가 들어갑니다 ㅡ0ㅡ;;
아참 여기서 사용된것이 지금 문자열이랑 정수여서 좀 의문이 가실지모르겠는데요
사실은 아싸는 SOCKET구요 이 SOCKET는 int값으로 받을수 있습니다. 사실상 int값이구요
unix C에서두 int값으로 return받구요 그래서 받아집니다.
이런 황당한 경우가 생기는데요
디버깅 안되는건 기본이구 소스 수정후에도 기존소스대로 디버깅하는 문제하며 ㅡ0ㅡ
이건 이해하겠지만 저문제는 용납이 안되더군요
왜 이런문제점이 발생하는걸까요? ㅡㅡ?
혹시 해보신분.. 주의점이나 알아두어야할것이 있다면 좀 알려주세요~
|