我在代码中有问题。 malloc
工作和在while循环,realloc()
第一次工作,当它被称为第二次它总是失败。 该代码是获取数字的主要因素的算法的一部分。为什么realloc每次都失败?
int main()
{
int n, in, *ar, len = 0;
scanf("%d", &n);
ar = (int *) malloc(1 * sizeof(int));
while(n % 2 == 0){
ar[len] = 2;
len++;
ar = (int *) realloc(ar, len * sizeof(int));
if(ar == NULL){
printf("Error");
return 1;
}
n /= 2;
}
return 0;
}
我试着用len
初始化为1,但仍然失败。奇怪的是它在第一次通话中不会失败,但在第二次通话时失败。我已经阅读过其他类似的问题,但我是初学者,我不了解。 在此先感谢!
没有包括''和演员来的'realloc'使所有的差异造成的。 –
pmg
@pmg我已经包括,我不明白realloc有什么问题 –
没有''包括在内,编译器假定'realloc'返回一个int,然后在cast中将int转换为一个指针。首先:'malloc'返回一个指针并将该指针解释为一个int值可能会改变该值。其次:将(无效)int转换为指针是无效的转换;该转换使得编译器在没有警告的情况下接受它。 –
pmg