Мне нужно написать адрес указателя структуры (структура называется "Post"), которая разместила другую публикацию.Существует фиксированный тип возврата с именем result
со следующим объявлением:
struct result {
void** elements;
size_t n_elements;
};
Для структуры Post у нее есть следующее объявление:
struct post {
uint64_t pst_id;
uint64_t timestamp;
size_t* reposted_idxs;
size_t n_reposted;
};
Вот мой код:
result* find_all_reposts(post* posts, size_t count, uint64_t post_id, query_helper* helper) {
result * ret_result = (result *) malloc(sizeof(result));
ret_result->elements[100];
ret_result->n_elements = 0;
for(int i = 0; i < count; i++){
post * temp = &posts[i];
size_t total_reposted = temp->n_reposted;
if(total_reposted > 0){
for(int q = 0; q < total_reposted; q++){
int index_of_repost = temp->reposted_idxs[q];
ret_result->elements[q] = &posts[index_of_repost];
ret_result->n_elements++;
}
}
}
return ret_result;
}
Однако я получаю ошибку SEGV для ret_result->elements[q] = &posts[index_of_repost];
.Я думал, что это может быть изначально, что я не инициализировал поле элементов в структуре ret_result
, но я получаю warning: statement with no effect
для этого:
warning: statement with no effect [-Wunused-value]- ret_result->elements[100];
Я думаю, что тип void **
дляполе elements
в result
может меня смущать.Из того, что я понимаю, это указатель на указатель, который, очевидно, может быть массивом и, следовательно, в основном указателем на массив сообщений?
Я должен уточнить, что count
- это количество сообщений и что возвращаемый-Результат управляется отдельно и, следовательно, любая выделенная куча память освобождается в отдельном процессе.
Спасибо за вашу помощь:)