fclose를 해준적이 없는데

fclose에서 계속 세그멘테이션 에러 나서 

NULL체크해보니까 파일포인터가 종범이더라..

그래서 일단 fflush로 파일에 쓰고 fclose 자체를 안해버렸는데

이거 왜이러는지 아는 성님 계십니까

while(fgets(str,LINE,fp)!=NULL)
        {
                strcpy(str_org,str);                // 온전한 형태의 한 라인

                first_num+=5;
                if(str[0]==' ')        // 심볼이 존재하는지 아닌지 플래그 설정
                        symbol_flag = 0;
                else
                        symbol_flag = 1;

                num=line_tok(tok,str);

                if(num==-1 || strcmp(tok[0],"END")==0)        // 토크나이징되는 게 없으면 종료
                {
                        break;
                }

                //opcode = 'START'
                if(num>1 && strcmp(tok[1],"START")==0)        // START면 첫줄 처리후 저장
                {
                        start_num = str_to_hex(tok[2]);
                        strcpy(program_name,tok[0]);
                        fprintf(fp_lst,"%d        %06X        %s",first_num,location[index++],str_org);
                        first_num+=5;

                        continue;
                }
                else if(strcmp(tok[0],"START")==0)        // START면 첫줄 처리후 저장
                {
                        start_num = str_to_hex(tok[1]);
                        
                        fprintf(fp_lst,"%d        %06X        %s",first_num,location[index++],str_org);
                        first_num+=5;

                        continue;
                }
                //write header record
                if(!header_flag)
                {
                        fprintf(fp_obj,"H%-6s%06X%06X\n",program_name,location[0],program_length);
                        header_flag=1;
                        fflush(fp_obj);
                }
                
                        
        }
        //fclose(fp_obj);
        fclose(fp);
        fclose(fp_lst);
        if(fp_obj!=NULL)
        {
                fclose(fp_obj);
        }
        return 0;

fp_obj라는걸 굵은글씨 있는곳에서 밖에 안쓰는데 왜이러지..

한 함수에서 "w"형으로 두개 파일 열면 저럼?