我在代碼中有問題。 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