2013-10-15 6 views
3

를 해제 할 때 SIGABRT를이 내가 필요한 공간을 할당하는 방법입니다 방법 :문자 포인터

char *all_type_str; 
... 
all_type_str = malloc(sizeof(char)*4); 

설정 문자열 : 다른 배열을 설정

strcpy(all_type_str,"all"); 

:

... 
values[0].value = all_type_str; 

및 자유 값 배열 :

for (i=0; i<arrSize; i++) 
{ 
    free(values[i].value); // <-- SIGABRT 
} 
free(values); 

할당 값 배열 : 1 위를 해제하려고 할 때 내가 원하는 "all" 문자열

와 NOT NULL 포인터를 가지고 있지만 어떤 이유로 내가 SIGABRT를 얻을 수 있음을 알 수 GDB를 사용

values = malloc(sizeof(struct cnf)*adjArrSize); 

배열에.

왜 이런 일이 발생하는지 알고 싶습니다.

+1

우리는'values'가 어떻게 할당되고'arrSize'가되는지 그리고 전체 레이아웃인지 알아야합니다. – orlp

답변

0

포인터가 범위를 벗어 났습니까? 이것도 같은 기능입니까? 전체 코드가 표시되지 않으면 알 수 없습니다.