openmp指针问题

发布于 2024-10-30 20:08:14 字数 393 浏览 1 评论 0原文

我用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你爱我像她 2024-11-06 20:08:14

这就是问题所在:“在进入并行部分之前,它们被分配并设置为 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文