6.0에서는 잘되던것이 2008에서는 왜안될까요?
글쓴이: ROKorean / 작성시간: 수, 2010/05/05 - 6:59오후
PTR_Node idListR(PTR_Node head){
printf("Start\n");
if(head == NULL){ //head노드리스트의 마지막 도달시
printf("NULL\n");
return NULL; //NULL리턴.
}
if(head->tag == Nid){ //id인경우.
PTR_Node node;
printf("identifier\n");
node = (PTR_Node)malloc(sizeof(PTR_Node)); //노드할당(여기에서 안넘어갑니다.!!)
node->item = head->item;
node->tag = head->tag;
head = head->next; //헤드 다음으로 이동.
node->next = idListR(head); //재귀호출.
return node;
}
else{// 인티져, 괄호 인경우.
printf("else");
return idListR(head->next);
}
}
텍스트파일에 저장되어있는 값들을 읽어서 노드로 구성을하여 그노드의 헤드를 이 함수에서 매개변수 head로 받습니다. Identifier인지 Number인지 구분하고 Identifier로만 이루어진 링크드리스트를 만들어서 첫번째 노드를 리턴해주는 함수랍니다.
왜이럴까요;ㅠ
Forums:
malloc(sizeof *node)
저는 Windows Programming의 pointer typedef을 싫어합니다.
특히 PTSTR와 PTCHAR 이 같은 것도 희한하고, 과거의 유산으로 문서나 기존 source들이
다 LPTSTR 드립이더군요.
Node의 크기가 얼마인지는 모르겠습니다만 6.0에서도 우연히 동작하고 있었을 가능성이 높군요.
안넘어 간다는게
안넘어 간다는게 무슨 뜻인가요?
PTR_Node 가
포인터로 보이는데 malloc(sizeof(Pointer)) 하면 단 4 byt만 잡힙니다.
보면 linked list 를 이용한 프로그램 같은데 구조체의 사이즈를 구하실려면 sizeof(구조체) 이런 식으로 적어 주세요.
댓글 달기