我有两个功能。
struct logger_message vget_log_msg(enum LogStatus log_status, const char* format, va_list args) {
struct logger_message log_msg;
log_msg.status = log_status;
log_msg.timestamp = get_current_timestamp();
memset(log_msg.message_buffer, 0, MESSAGE_SIZE);
if(format){
vsprintf(log_msg.message_buffer, format, args);
}
return log_msg;
}
和
int send_log_message_to_mqueue(mqd_t mqd, enum LogStatus log_status, const char* format, ...) {
struct logger_message msg;
va_list argp;
va_start(argp, format);
msg = vget_log_msg(log_status, format, argp);
va_end(argp);
int res;
res = send_message_to_mqueue(mqd, (char *)&msg, sizeof(msg));
return res;
}
因此,我在从 vget_log_msg 在线返回时收到错误“Segmentation Fault(Core dumped)”:
msg = vget_log_msg(log_status, format, argp);
编辑:也许这些信息会很有用
struct logger_message{
enum LogStatus status;
time_t timestamp;
char message_buffer[MESSAGE_SIZE];
};
有人知道我为什么会收到此错误吗?如何纠正它?