代码如下:
int outlog_printf(size_t level, const char* format, ...) {
va_list args;
int ret = 0;
// We are going to print this to the screen
if (verbose_level >= level) {
va_start(args, format);
ret = vfprintf(stdout, format, args);
fflush(stdout);
va_end(args);
}
// We are going to print this to the logfile
if (log_level >= level) {
va_start(args, format);
ret = vfprintf(log_f, format, args);
va_end(args);
}
return ret;
}
在main函数中,我调用out_printf():
outlog_printf(1, "Initialize the program!\n");
我使用g ++编译程序,看起来很好。但是当我执行它时,会发生错误:
分段错误(核心转储)
然后,我尝试用gdb调试它。当谈到以下语句时(在outlog_printf函数中):
ret = vfprintf(log_f, format, args);
我收到以下错误:
编程接收信号SIGSEGV,分段故障。
___vfprintf_chk (fp=0x0, flag=1, format=0x8b59050 "Initialize the program!\n", ap=0xbfffee78 "\n")
at vfprintf_chk.c:29
29 vfprintf_chk.c:没有这样的文件或目录。
我搜索了很多内容,但没有找到解决办法...... 顺便说一句,我在Ubuntu 14.04下。