2011-04-07 100 views
0

我已經寫了一個C程序,需要使用openmp進行並行化。 我已經宣佈了私有和共享變量,但在代碼的開始,當我打電話一些程序來釋放我得到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的

+1

我們沒有足夠的信息來回答你的問題,這些變量在哪裏被初始化? – 2011-04-07 13:23:11

+0

在進入並行部分之前,它們被分配並設置爲NULL – 2011-04-07 13:39:37

+1

看起來你正在釋放一個指向動態分配內存的指針 – abeln 2011-04-07 13:46:38

回答

2

這是問題:「在進入並行部分之前,它們被分配並設置爲NULL」

你不能分配一個指針,然後將它設置爲NULL然後釋放它,因爲現在你釋放了一個指向指針的指針沒有。

你需要分配,然後使用它們,然後釋放(即刪除),然後設置爲NULL。

+0

在我釋放指針的過程中,我檢查它們是否爲NULL。如果他們是我我沒有對他們做任何事情 – 2011-04-07 13:55:52