2017-12-04 13 views
0

struct을 사용하는 데있어 매우 익숙하므로 일부 코드는 올바르지 않을 수 있습니다. 오류가 발생했습니다. struct을 사용하여 스택을 모방하려는 코드를 작성 중입니다. 현재 pushInt() 스택을 포인터로 사용하는 함수를 만들려고합니다 struct 및 일부 int 값입니다.구조체 세그먼트 오류 : 11. 구조체의 값을 처음으로 null로 초기화 할 수 없습니다.

Stack *pushInt(Stack *stack, int value) 
    { 
     stack->intTop = TRUE; 
     stack->data.intValue = value; 
     stack->next = NULL; 

     return stack; 
    } // end pushInt 

이 내가 stact struct을 정의하기 위해 사용하는 코드는 다음과 같습니다이 내가 puchInt() 기능에 대해 가지고있는 코드입니다.

int main() 
    { 
     Stack *theStack = NULL; 

     //getInteger function just gets user input 
     int pushValue = getInteger("value to push onto stack: "); 
     theStack = pushInt(theStack, pushValue); 
    } 
+0

노드에 메모리를 할당해야합니다. –

+0

@RetiredNinja 변수를 재 할당하기 전에'pushInt()'함수에서 malloc을 사용하여이 작업을 수행 할 수 있습니까? – theGreatOne

답변

0

theStack = pushInt (theStack, pushValue :

struct StackNode 
    { 
     int intTop; 

     union { 
      int intValue; 
      char stringValue[MAX_STRING_LENGTH]; 
     } data; 

     struct StackNode *next; 
    }; 

이 내가 코드의 기능을 테스트하기 위해 실행하는 주요 기능은 다음과 같습니다 likedList처럼 행동하는 자기 참조 구조체입니다);

여기서 NULL 포인터 (NULL로 초기화 된 theStack)가 전달됩니다. 따라서 pushInt 함수 내에서 NULL 포인터를 참조 해제하므로 seg 오류가 발생합니다.

변수를 메모리에 할당해야합니다.