读大量文件时,只能读出前面的一半???
win10C语言申请内存空间最大能申请多少个???
malloc是开辟一个连续的空间,可能你电脑里没有连续的5M空间存在,所以会崩溃,就比方你开一个10000*10000的int型数组页可能会报错一样。
而咱们要申请15548/1024≈15MB块连续的内存,那怎么的电脑到底有没有15MB的连续内存呢?有没有针对这样问题的解决办法呢?我暂时想到的是既然没有连续的15MB内存,那就找申请3块,每块5MB,只是程序代码繁琐点而已了。坐等有木有好得办法了。
#include <stdio.h>
#include <stdlib.h>
typedef struct POS{
int year;
int month;
int day;
char sex;
int num;
}POS;
long n=1;
POS * resd(){
FILE *fp;
fp = fopen("C:\\Users\\牛鹏\\Desktop\\births.txt","r");
if(fp){
printf("读入成功");
}else{
printf("读入失败");
}
fscanf(fp,"%d",&n);
printf("\nn=%d\n",n);
POS* pos = (POS*)malloc(sizeof(POS*)*(n));
int i;
for(i=0;i<n;i++){
fscanf(fp,"%d,%d,%d,%c,%d",&pos[i].year,&pos[i].month,&pos[i].day,&pos[i].sex,&pos[i].num);
printf("\n第%d批%d,%d,%d,%c,%d",i,pos[i].year,pos[i].month,pos[i].day,pos[i].sex,pos[i].num);
}
return pos;
}
int main() {
POS *pos = resd();
return 0;
}
|