我在C中编写了一个程序,需要使用openmp进行并行化。 我已经声明了私有和共享变量,但在代码的开头我调用了一些程序来释放我得到的列表
error for object 0x1000c1e20: pointer being freed was not allocated
destroy_t_value(head_t1_values);
t_value_delete(&head_t1_values, 0);
destroy_chi_value(head_chi1_values);
chi_value_delete(&head_chi1_values, 0);
这些变量是私有的 代码工作正常,没有openmp
答案 0 :(得分:2)
问题是:“在进入并行部分之前,它们被分配并设置为NULL”
你不能分配指针,然后将其设置为NULL然后释放它,因为现在你释放一个指向任何东西的指针。
你需要分配,然后使用它们,然后解除分配(即删除),然后设置为NULL。