| [ KAIST ] in KIDS 글 쓴 이(By): pictor (gaugefield) 날 짜 (Date): 2001년 4월 4일 수요일 오후 02시 19분 17초 제 목(Title): Re: [Q] C에서 realloc에 관한 문제 저 같으면 다음과 같이 할 것 같은데... CHREQ_PACKET이랑 CHACK_PACKET의 이름을 CH_REQ랑 CH_ACK으로 바꾸었음. 왜냐하면 어차피 packet들이라는 것을 아는 이상 CHREQ_PACKET처럼 PACKET이라는 꼬리표를 달고 다닐 필요가 없다는 것 때문임. ++ struct CH_REQ **chreq; struct CH_ACK **chack; struct CH_REQ * CH_REQ_new(int source, int dest) { struct CH_REQ *p; p = malloc(sizeof(*p)); if (p == NULL) return NULL; p->from_node = source; p->seq_num = rand(); p->s_id = source; p->d_id = dest; p->hop_cnt = 0; p->route_list[0] = source; for (i = 1; i<HOP_CNT_LIMIT; i++) p->route_list[i] = MAX_NUM; for (i = 0; i<SLOT_SIZE; i++) p->free_slot_list[i] = node[source].data[i].free; node[source].req_transmitted += 1; return p; } int chreq_alloced; #define ALLOCED_UNIT 100 void chreq_check(int m) { int size; if (m != chreq_alloced) return; chreq_alloced += ALLOCED_UNIT; // size가 100개씩 늘어난다. size = chreq_alloced * sizeof(struct CH_REQ *); if (chreq == NULL) chreq = malloc(size); else chreq = remalloc(chreq, size); } if ((double)t >= call_arr) { chreq_check(m); chreq[m] = CH_REQ_new(s, d); m_prev = m; m++; call_arr += exp_dist(820.); // another call_arrival } //if |