无法计算无限循环情况

时间:2019-09-19 18:10:11

标签: c loops timeout infinite-loop

我有一个函数range(),它基于最小和最大两个参数创建并返回一个数组。数组填充了介于min和max之间的整数(不包括min和max)。

从测试结果中我知道有一个无限循环的情况(超时10秒),但是我还没有弄清楚它在哪里。

功能:

int     *range(int min, int max)
{
    int length;
    int i;
    int *range;

    length = max - min;
    if (length < 1)
    {
        range = 0;
        return (range);
    }
    range = (int*)malloc(sizeof(range) * length);
    i = 0;
    while (i < length)
    {
        range[i] = min + i;
        i++;
    }
    return (range);
}

或者我可能错过了某些东西而导致超时?

1 个答案:

答案 0 :(得分:0)

int *range(int min, int max)
{
    int length;
    int i = 0;
    int *rnge_ptr;

    length = max - min;
    if (length < 1)
    {        
        return NULL;
    }

    range_ptr = (int*)malloc(sizeof(int) * length);

    while (i < length)
    {
        range_ptr[i] = min + i;
        i++;
    }
    return range_ptr;
}