KAIST

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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

여러 고수님들께  부탁드립니다 




[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.