我想在達到最大容量時調整數組的大小。但錯誤上來後,我做的./a.out請幫我...使用realloc存儲從文件中讀取int的數組時出錯
Error: a.out: malloc.c:3574: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.
代碼:
#include<stdio.h>
#include <stdlib.h>
int main(void)
{
int cap=5;
int *arr = malloc(cap*sizeof(int));
FILE *f;
if((f=fopen("/home/file.txt","r"))==NULL)
printf("You cannot open");
while(fscanf(f, "%d", arr++)!=EOF)
{
index++;
if(index==cap-1)
arr = realloc(arr, (cap +=1) * sizeof(int));
}
return 0;
}
因此該解決方案將使用指針指向的編曲,然後從指針向右讀增加
arr
? – 2012-04-07 18:14:30只要不失去指向開始分配的指針。例如,在調用'realloc()'時創建一個副本並使用它。 – 2012-04-07 18:15:48
我做了以下幾點: int * y = arr; while(fscanf(f,「%d」,y ++)!= EOF) 所以現在我有一個新的指針做工作,並且arr不會改變它的原始位置。但是我得到了一個分割錯誤:( – 2012-04-07 18:18:05