【发布时间】:2019-06-17 12:44:25
【问题描述】:
我会在文件中读取一些双重信息,但我的代码会出错。 此错误消息是“realloc(): invalid next size”。 如何解决此错误?
如果我减少文件中的读数数量,错误就会消失。为什么我没听懂?
#include <stdio.h>
#include <stdlib.h>
#define p1 0.5
#define p2 20
int main(void){
FILE *fp;
int i,j;
double *real_number;
double *temp;
real_number = (double *) malloc(sizeof(double) * 1);
fp = fopen("input.txt","r");
for(i = 0 ; !feof(fp) ; ++i)
{
real_number = (double *) realloc(real_number,sizeof(double)*2);
fscanf(fp,"%lf",&(real_number[i]));
printf("%.2f \n",real_number[i] );
printf("i:%d\n",i );
}
return (0);
}
【问题讨论】:
-
我认为您想为循环中的当前值 +1 数分配内存,但实际上您为 2 个双精度值分配了内存。
real_number = (double *) realloc(real_number,sizeof(double)*(i+1));
标签: c undefined-behavior realloc memory-mapped-files