Ich möchte die Größe des Arrays ändern, wenn es seine maximale Kapazität erreicht. Aber Fehler kam, nachdem ich ./a.out tun Bitte helfen Sie mir ...Fehler bei der Verwendung von realloc für ein Array, das read int aus der Datei speichert
Error: a.out: malloc.c:3574: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.
Code:
#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;
}
So ist die Lösung einen Zeiger verwenden zum arr zu zeigen und dann aus dem Zeiger rechts gelesen ? –
Verlieren Sie nicht den Zeiger auf den Anfang Ihrer Zuweisung. Erstellen Sie eine Kopie und verwenden Sie diese, wenn Sie beispielsweise 'realloc()' aufrufen. –
Ich habe folgendes getan: int * y = arr; while (fscanf (f, "% d", y ++)! = EOF) so jetzt habe ich einen neuen Zeiger tun die Arbeit, und arr ist nicht ändern Sie den ursprünglichen Speicherort. Aber stattdessen habe ich einen Segmentierungsfehler :( –