我正在嘗試通過使用realloc
來動態調整數組的大小。這個數組在我的函數之外使用malloc
初始化。爲什麼realloc()會導致我的程序崩潰?
這裏是我的功能:
size_t verarbeite_anlagendatei(ANLAGE *anlage_arr) {
FILE *fp;
ANLAGE anlage;
fp = fopen("anlagen.dat", "r");
if(fp == NULL) {
printf("Anlagedatei existiert nicht. Bitte mit Menuepunkt (0) weiter machen.\n");
return 0;
}
int index = 0;
size_t size = 1;
while(fscanf(fp, "%d %s %s %f %d %d",
&anlage.InventarNr,
anlage.Anlagenbez,
anlage.Standort,
&anlage.Basiswert,
&anlage.Nutzdauer,
&anlage.AnschJahr) != EOF) {
if(index > 0) {
size++;
realloc(anlage_arr, size * sizeof(ANLAGE));
}
anlage_arr[index] = anlage;
index++;
}
return size;
}
我知道我有一個新的指針初始化爲ANLAGE
類型並檢查它是否我呼籲realloc
後的NULL
,但因爲這個函數總是導致程序崩潰,我在這種情況下,它跳過了它。
你確定是realloc導致崩潰而不是後面的行嗎?你可以在你的問題中添加一個gdb回放的崩潰嗎? – gowrath
anlage_arr甚至在任何時候都是malloc ed? – gowrath
我已經檢查了printf()行,如果它真的是realloc(),崩潰的程序,它確實是。 – djafix