openmp指针问题
我用 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 即可正常工作
I have written a program in C which needs to be parallelised using openmp.
I have declared the private and shared variables but in the beginning of the code when I am calling some procedures to free up the lists I get
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);
These variables are private
The code works fine without openmp
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这就是问题所在:“在进入并行部分之前,它们被分配并设置为 NULL”。
您不能分配一个指针,然后将其设置为 NULL,然后释放它,因为现在您正在释放一个指向任何内容的指针。
您需要分配,然后使用它们,然后取消分配(即删除),然后设置为 NULL。
That is the problem: "Before entering the parallel part they are allocated and set to NULL"
You cannot allocate a pointer, then set it to NULL and then free it, cause now you are freeing a pointer that points to nothing.
You need to allocate, then use them, then deallocate (ie delete) and then set to NULL.