gpt4 book ai didi

c - 从文件中读取 int 时使用重新分配的数组运行代码时出错

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:16 25 4
gpt4 key购买 nike

所以指针的初始容量是 5,然后它会根据文件中整数的数量自行调整大小,之后我想打印出数组中读取的整数。但是我在运行它时遇到了这个错误。

ERROR:a.out: malloc.c:3574: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.
Aborted

(之后有很多东西)

代码:

    #include<stdio.h>
#include <stdlib.h>


int main(void)
{
int index=0;
int cap=5;
int *arr = malloc(cap*sizeof(int));
FILE *f;

if((f=fopen("/home/alexchan/Downloads/fileOints000.txt","r"))==NULL)
printf("You cannot open");

int *y = arr;

while(fscanf(f, "%d", arr++)!=EOF)
{
index++;
if(index==cap)
arr = realloc(arr, (cap +=10) * sizeof(int));
}


int x;
for(x=0;x<index;x++)
printf("%d\n",*(y++));

return 0;


}

最佳答案

您将 y 设置为指向您的数组,但忘记在重新安装数组时更新它的值。

while(fscanf(f, "%d", arr++)!=EOF)
{
index++;
if(index==cap) arr = realloc(arr, (cap +=10) * sizeof(int));
}

int *y = arr; // THIS SHOULD BE AFTER THE LOOP

realloc 在一般情况下不会原地增长数组;它返回一个完全不同的指针。发生这种情况后,y 的旧值将无法再使用。

关于c - 从文件中读取 int 时使用重新分配的数组运行代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com