2014-02-18 5 views
0

임 C에서 구조와 형식 정의를 통해 no_routes을 인쇄하려고하지만 아래의 코드는 사용자 정의 데이터뿐만 아니라 입력에 이름을 부여하는 세그먼트 오류중첩 구조와으로 typedef

typedef struct RDI 
{ 
    int no_routes; 

}RD; 


struct Os_class 
{ 

    RD os_rdi[10]; 

}*OS_CL; 


void Initiate_CL() 
{ 
    OS_CL->os_rdi[0].no_routes = 10; 

} 


main() 
{ 

Initiate_CL(); 

//printf(" CL %d",OS_CL->os_rdi[0].no_routes); 
} 

사용 형식 정의입니다. 예를 들어 구조체가있는 typedef를 사용하여 새 데이터 형식을 정의한 다음 해당 데이터 형식을 사용하여 다음과 같이 직접 구조체 변수를 정의 할 수 있습니다.

답변

0

포인터는 OS_CL이지만 메모리는 할당하지 않았습니다.

void Initiate_CL() 
{ 
    OS_CL = malloc(sizeof(Os_class)); <-- allocation. 

    OS_CL->os_rdi[0].no_routes = 10; 
} 

메모리 누수를 피하기 위해 사용 후 free으로 메모리 할당을 해제했는지 확인하십시오.