pthread_create()在struct参数中丢失const char *数据

时间:2017-01-09 12:59:16

标签: c

我有一个似乎与pthread_create有关的奇怪问题。

我有一个包含const char *变量的结构:

typedef struct Notification {
    const char *summary;
    const char *body;
} Notification;

值得注意的是,数据是使用g_variant_get_string(content, NULL);的{​​{1}}分配给这些变量的,但据我所知,不应该影响此问题。

在pthread中使用此结构时似乎出现了问题。

const gchar *

运行简单:

const gchar *summary = NULL;
const gchar *body = NULL;

summary = g_variant_get_string(content, NULL);
body = g_variant_get_string(content, NULL);

Notification *n = malloc(sizeof(Notification));
assert(n != NULL);
n->summary = summary;
n->body = body;

pthread_create(&split_notification, NULL, &run, (void *)n));

它产生垃圾的地方,例如:

void *
run(void *arg)
{
    Notification *n = (Notification *)arg;
    printf("summary: %s\n", n->summary);
    printf("body: %s\n", n->body);

    return NULL;
}

我尝试将相同的结构转换为void和back,并产生所需的结果。发生了什么事?

0 个答案:

没有答案