2010-06-28 2 views
1

내 C 응용 프로그램을 통해 코어를 SIGSEGV에 이르게 다음 두 줄이 있습니다C : sprintf와는 나 strlen

char buf[1024]; 
sprintf(buf, "%s/game/rabbit/habit/cmd/talkPipe", getenv("APPLICATION_PATH")); 
응용 프로그램은 산발적으로 다음과 같은 방식으로 SIGSEGV와 충돌

가 :

strlen(ff2ba231, 0, ffbfe1d0, 10, 7fff24d7, 0)+0x50 
sprintf(ffbfe2a4, ff2ba231, 0, 74656400, 12, ff362ef2)+0x24 
RabbitTalk(ffbfea80, ffbfee50, 1, d, ffbfea12, 0)+0x21c 
... 

사람이 통과 할 수 있습니다 문제가있는 곳/어디에 있을지에 대한 힌트가 있습니까?

고맙습니다.

답변

2

getenv가 NULL을 반환 할 수 있습니까?

손에 문제가 없다고해도 NULL을 확인해야합니다. 대부분의 이전 스타일 C 함수는 그렇지 않습니다.

+0

가 ... 팁 :) – roger

0

getenv() 환경 변수이 당신이 올바른지 SIGSEGV

+0

당신이 올바른지 주셔서 모두 감사의 원인, (수출되지 않음)이 존재하지 않을 경우 NULL을 반환 감사합니다 ... 모두 팁 :) – roger