我收到“分段错误(核心已转储)”

并且过程被中断。

请帮助修复它!

可疑的部分代码在这里

...

FILE *pFile;
char buffer[100];
sprintf(buffer,"/var/www/html/%s.txt",topic);

pFile = fopen(buffer,"w" );


上面可能会出现此问题
(未输入if-else)

if( NULL == pFile ){
    _mosquitto_log_printf(NULL, MOSQ_LOG_DEBUG,"open failure" );
}else{
    fwrite(payload,1,sizeof(payload)-1,pFile);
    _mosquitto_log_printf(NULL, MOSQ_LOG_INFO, "File context : %s", payload);
}
fclose(pFile);


...

操作系统Ubuntu 14

最佳答案

即使是空指针,也可以使用fclose调用pFile。用无效的指针(如空指针)或已经关闭的fclose调用FILE*是不确定的。

仅调用fclose是指针不是NULL,即在代码的else子句中。

关于c - 使用“FILE * pFile;”的段错误(核心已转储)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38323174/

10-13 07:27