2011-04-07 3 views
0

openmp를 사용하여 병렬 처리해야하는 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); 

을 얻을 목록을 확보하기 위해

+1

질문에 대한 답변이 충분하지 않습니다.이 변수는 어디에서 초기화됩니까? –

+0

병렬 부분을 입력하기 전에 변수가 할당되고 NULL로 설정됩니다. –

+1

동적으로 할당 된 메모리를 가리키는 포인터를 해제하는 것 같습니다 – abeln

답변

2

그것은 "병렬 부분을 입력하기 전에 할당되고 NULL로 설정됩니다"

포인터를 할당 한 다음 NULL로 설정 한 다음 해제하면 이제 포인터를 가리키는 포인터가 해제됩니다 아무것도.

할당하고 할당 한 다음 할당을 해제 (예 : 삭제) 한 다음 NULL로 설정해야합니다.

+0

프로 시저에서 포인터가 NULL인지 확인합니다. 그들이라면 나는 그들에게 아무 것도하지 않고있다. –