int analyze_element(char* pszSrc, char** ppszObj)
{
:
:
string strBuff = "";
int iFlag = 0;
:
:
if (pszPos)
{
//string strBuff = "";
//int iFlag = 0;
:
:
while(1)
{
if (_SCANAPI_get_sent(&pp;_word, &n;_word) == eEOF)
{
//cout << "break : " << iTime << endl;
break;
}
:
:
} // while (1)
:
:
} // if (pszPos)
:
:
return iReturn;
}
OS는 FreeBSD 4.10-Releases 버전이고, 컴파일러는 g++ 2.95.4 다. scan 라이브러리를 이용해 문자열을 형태소 분석하는 루틴인데 원래는 저 strBuff 변수가 if 문안에 있었다. while 루프 안에서 strBuff 에 +=로 append를 한다. 문제는 어느정도 처리를 하다가 마지막 return iReturn; 문에서 segmenet fault가 뜬다. 이상한건 while문 안에 있는 루프 탈출 조건 검사시 주석으로 막은 cout << … 을 실행하면 이상없이 잘 도는 거다. 아무래도 스택이 꼬이는 듯 해서 strBuff 선언을 함수 시작위치로 옮겼다. 일단 이렇게 해서 해결은 봤는데 찜찜하다. 나중에 시간나면 한번 원인을 분석해 봐야겠다.