KAIST

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


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