| [ KAIST ] in KIDS 글 쓴 이(By): Lobbyist (망각을 위�) 날 짜 (Date): 2001년 3월 16일 금요일 오후 03시 06분 53초 제 목(Title): [Q] C에서 realloc에 관련된 문제. 안녕하세요? 제가 이번에 논문땜에 시뮬레이션을 해야 되는데, 이게 논리적으로 맞는지 혹은 바꿔야 될 부분이 있다면 어떻게 바꾸는게 좋은지 좀 알고 싶어서 여러 고수님들께 여쭙고자 합니다. struct CHREQ_PACKET { int packet_type; // Packet Type int seq_num; // Sequence Number int s_id; // Source ID int d_id; // Destination ID int hop_cnt; // Hop Count int route_list[MAX_NUM]; // Route Node List int free_slot_list[SLOT_SIZE]; // Free Slot List }; struct CHREQ_PACKET **chreq; void main(void) { int m=0; for(t=0; t<T_MAX; t+=DELTA_T) { // Call Generation if ((double)t >= call_arr) { // chreq generation if(m==0) *chreq[m] = (CHREQ_PACKET*)malloc(sizeo(CHREQ_PACKET)); else *chreq[m] = realloc(*chreq[m-1],sizeof(CHREQ_PACKET)); *chreq[m].s_id=s; *chreq[m].d_id=d; *chreq[m].hop_cnt=0; *chreq[m].route_list[0]=s; *chreq[m].free_slot_list= m++; }}} 대충 설명하면, if절이 만족하면 chreq packet을 동적으로 생성시키는 과정입니다. 그러니깐 시뮬레이션 시간동안 몇번 패킷을 발생되는지는 알 수없어서 정적으로 할당할 수는 없습니다. realloc를 첨 봐서 저렇게 해도 되는지 아는지 궁금해서요. 제가 한건 보면, 첨(m=0)에는 malloc하고 그 다음(m>0)부터는 계속 realloc하는 순이거든요 나중에 free시키는건 그냥 free(chreq)만 쓰면 되는건가요? 제가 알고싶은건, call이 발생될때마다 chreq 패킷을 발생시켜야하고 발생된 서로 다른 chreq패킷을 제가 따로따로 조절할 수 있어야 합니다. 아 제가 설명을 맞게 했는지 모르겠군요. 전달이 도어야 될텐데 T_T 여러 고수님들께 부탁드립니다 |