我需要写一个结构(结构称为“post”)的指针地址,它已经重新发布了另一个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
字段在
结果
可能是在耍我。据我所知,这是指向一个指针的指针,它显然可以是一个数组,因此基本上是指向一个posts数组的指针?
我应该澄清一下
count
是投递数,返回的结果是单独管理的,因此任何堆分配的内存都会在单独的进程中释放。
谢谢你的帮助:)