Can';t图无限循环情形
我有一个函数Can';t图无限循环情形,c,loops,timeout,infinite-loop,C,Loops,Timeout,Infinite Loop,我有一个函数range(),它基于两个参数min和max创建并返回一个数组。该数组由min和max之间的整数填充(包括min和max) 我从测试结果中知道存在无限循环情况(10秒超时),但我还没有弄清楚它在哪里 功能: int *range(int min, int max) { int length; int i; int *range; length = max - min; if (length < 1) {
range()
,它基于两个参数min和max创建并返回一个数组。该数组由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);
}
int*范围(int最小值,int最大值)
{
整数长度;
int i;
整数*范围;
长度=最大-最小值;
如果(长度<1)
{
范围=0;
返回(范围);
}
range=(int*)malloc(sizeof(range)*长度);
i=0;
while(i
或者可能我遗漏了什么,而其他什么导致了超时?int*范围(int min,int max)
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;
}
{
整数长度;
int i=0;
int*rnge_ptr;
长度=最大-最小值;
如果(长度<1)
{
返回NULL;
}
范围_ptr=(int*)malloc(sizeof(int)*长度);
while(i
int*范围(int最小值,int最大值)
{
整数长度;
int i=0;
int*rnge_ptr;
长度=最大-最小值;
如果(长度<1)
{
返回NULL;
}
范围_ptr=(int*)malloc(sizeof(int)*长度);
while(i
使用range=NULL
或range=nullptr
而不是range=0
?@EugeneSh不是更好吗。考虑<代码>(长度<1)返回< /代码> .<代码> siZeof(范围)<代码>=>代码> siZeof(*范围)< /代码>,无论如何,有一个与函数相同的变量是可怕的。@散布啊,错过了这行…嗯,<代码>范围=(int *)Maloc(sieof(范围)*长度);<代码>不正确sizeof(range)
是指针的大小,而不是int
。但这并不是说它会导致无限循环。使用range=NULL
,或者range=nullptr
,而不是range=0
,不是更好吗?@EugeneSh。考虑<代码>(长度<1)返回< /代码> .<代码> siZeof(范围)<代码>=>代码> siZeof(*范围)< /代码>,无论如何,有一个与函数相同的变量是可怕的。@散布啊,错过了这行…嗯,<代码>范围=(int *)Maloc(sieof(范围)*长度);<代码>不正确sizeof(range)
是指针的大小,而不是int
。但这并不是说它会导致无限循环。