我正在尝试用文件中的数据填充结构数组并使用malloc()
. 数组大小约为 500,每次迭代分配的内存为 2 到 6 个字节。它在 Windows XP 上完美运行,但是当我在 Windows 7 x64 上运行它时,malloc
总是在迭代 109 中返回 null。我不能用完 RAM,因为我有 8Gb。知道它可能是什么或如何解决它吗?
编辑:这是代码
typedef struct
{
char mnemo[5];
char *op1;
char *op2;
int tam;
int codigo;
}instruction;
...
while(!feof(archivo))
{
fscanf(archivo,"%s",Tabla[i].mnemo);
fscanf(archivo,"%s",ops);
if(strchr(ops,',')==NULL){
Tabla[i].op1=(char *)malloc(strlen(ops)+1);
strcpy(Tabla[i].op1,ops);
Tabla[i].op2=NULL;
}
else{
Tabla[i].op1=(char *)malloc(strchr(ops,',')-ops+1);
strncpy(Tabla[i].op1,ops,strchr(ops,',')-ops);
Tabla[i].op1[strchr(ops,',')-ops]=0;
ops=strchr(ops,',')+1;
Tabla[i].op2=(char *)malloc(strlen(ops)+1);
strcpy(Tabla[i].op2,ops);
}
fscanf(archivo,"%s",codigo);
Tabla[i].codigo=(int)strtol(codigo,NULL,2);
fscanf(archivo,"%d",&Tabla[i].tam);
//printf("\n%s %s %s %x %d",Tabla[i].mnemo,Tabla[i].op1,Tabla[i].op2,Tabla[i].codigo,Tabla[i].tam);
i++;
}