【发布时间】:2018-01-15 20:46:50
【问题描述】:
我有一些这样的代码:
void logConnectionStatus(char * domain, char * status, mqd_t logQueue) {
char * message;
asprintf(&message, "Connection to domain %s: %s", domain, status);
mq_send(logQueue, message, 1024, 0);
free(msg);
}
但是 valgrind check 说
地址 0x566c0f5 在大小为 53 的块中分配了 0 个字节
可能是什么原因?谢谢。
【问题讨论】:
-
message是什么? -
我想你的意思是:
mq_send(logQueue, msg, strlen(msg), 0); -
Valgrind 在哪一行说有错误?
-
@Jean-FrançoisFabre 抱歉,这是复制粘贴错误,已修复。
-
@PaulFloyd 首先说:系统调用参数 mq_timedsend(msg_ptr) 指向不可寻址字节,然后是我问题中的消息。就在 asprintf 的那一行。