void hoge(data_t **data, int value) {
 *data = NULL;
 *data = malloc(sizeof(data_t));
 if (data == NULL) return;
 (*data)->value = value;
}

呼び出しを
 hoge(&data,10);

これではどうか