2016-10-29 2 views
0

프로그램을 디버그하려고하면 "분할 오류"와 같은 오류 메시지가 표시됩니다.구조체 포인터를 사용하는 분할 오류

typedef struct 
{ 
    int a; 
    char *** tab; 
}Operateur; 

int main() 
{ 
    char * chaine = "test"; 
    Operateur * emptyStruct = (struct Operateur *) malloc(sizeof(Operateur)); 

    emptyStruct->tab[0][0] = * chaine; 
    return 0; 
} 

내 배열 (탭)의 첫 번째 위치에 사슬의 내용을 넣고 싶습니다.

감사합니다.

+1

3-star 포인터'tab'에 대한 메모리를 할당하지 않았습니다. 구조체 포인터와 실제로 잘 맞습니다. –

+1

다른 3 성급 프로그래머가있는 작품 : –

+1

'struct Operateur'는 문제가되지 않습니다. 그리고 [malloc의 결과를 던지면 안됩니다] (https://stackoverflow.com/q/605845). – Siguza

답변

0

회원 탭이 초기화되지 않았으므로 할당해야합니다. 예를 들어 :

Operateur * emptyStruct = malloc(sizeof(Operateur)); 
emptyStruct->tab = malloc(sizeof(char**) * 1); 
emptyStruct->tab[0] = malloc(sizeof(char*) * 1); 

변경 "1"더 큰 배열을 할당합니다.

+0

Oh my bad. 감사 :) – Fuzion

관련 문제