私には2つの機能があります。
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];
};
このエラーが発生する理由を知っている人はいますか? それを修正する方法は?