構造体の配列をファイルからのデータで埋め、メモリを。で割り当てようとしていますmalloc()
。配列サイズは約500で、各反復で割り当てられるメモリは2〜6バイトです。Windows XPで完全に動作しますが、Windows 7で実行するとmalloc
、反復109でx64は常にnullを返します。8Gbを取得したため、RAMを使い果たすことはできません。それが何であるか、またはそれを修正する方法について何か考えはありますか?
編集:これがコードです
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++;
}