C:sprintf通过strlen导致SIGSEGV核心

时间:2010-06-28 09:09:53

标签: c printf sigsegv strlen

我的C应用程序有以下两行:

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
...

任何人都可以提示可能出现问题的位置/原因吗?

Thanx很多,

2 个答案:

答案 0 :(得分:2)

可能因为getenv返回NULL?

即使这不是问题,你应该检查NULL:大多数旧式C函数都没有。

答案 1 :(得分:0)

如果环境变量不存在(未导出),

getenv()将返回NULL,这会导致SIGSEGV