| [ KAIST ] in KIDS 글 쓴 이(By): guest (collins) <dilbert.prakinf.> 날 짜 (Date): 2001년 3월 16일 금요일 오후 10시 48분 37초 제 목(Title): Re: [Q] C에서 realloc에 관련된 문제. 왠만하면 C++ 로 짜시면 훨씬 재미 있을 것 같은데요.. 암튼, 제가 컴파일해보니까 잘 되는 코드로 올립니다요. #include <stdlib.h> #define ERROR_MESSAGE(a) { printf(a);\ exit(0); } struct CHREQ_PACKET { int a; int b; }; CHREQ_PACKET** chreq; /*| [0, a], [a+1, 2a], [2a+1, 3a], */ /*| for a given input number n, we could find an interval in which it */ /*| can be safely located. find_ceil aways return upper bound */ int find_ceil(int n, int a) { if (n < 0) ERROR_MESSAGE("find_ceil:: input %d < 0\n", n); if (n % a) return ((n/a) + 1) * a; else return n; } void main(void) { int room_size = 10; /*| whatever you want could come , but larger */ /*| than 1. */ int m = 0; int m_prev = 0; for (int t = 0 ; t < 100 ; t++) { if (find_ceil(m_prev, room_size) < find_ceil(m, room_size)) { int new_size = find_ceil(m, room_size); chreq = realloc(chreq, new_size * sizeof(CHREQ_PACKET*)); for (int i = find_ceil(m_prev, room_size) ; i < new_size ; i++) chreq[i] = realloc(chreq[i], sizeof(CHREQ_PACKET)); } m_prev = m; m++; } } |