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 선언을 함수 시작위치로 옮겼다. 일단 이렇게 해서 해결은 봤는데 찜찜하다. 나중에 시간나면 한번 원인을 분석해 봐야겠다.