cs106132@umbc5.umbc.edu (cs106132) (04/20/91)
Hi, I am trying to read a big FAT from a 320M DOS 4.0 partition. It is about 80K bytes. I would like to read it in two chunks as follows: unsigned int *FAT_buf1, *FAT_buf2; if (BIG_FAT) { /* larger than 64K */ if ((FAT_buf1 = (unsigned int*) malloc (64L * 1024L)) == NULL) { cprintf (" cannot allocate buffer for FAT\r\n"); return (-1); } if ((FAT_buf2 = (unsigned int*) malloc (BYTES_PER_FAT-(64L*1024L))) == NULL) { cprintf (" cannot allocate buffer 2 for FAT\r\n"); return (0); } } else { if ((FAT_buf1 = (unsigned int*) malloc (BYTES_PER_FAT)) == NULL) { cprintf (" cannot allocate buffer for FAT\r\n"); return (-1); } } return (0); /****************************************************************/ I am using Turbo C 2.0 large memory model to compile a program that uses code similar to the one above. On the big partition (320M), it bombs out when attempting to get 64K for the first buffer. When I check the available memory using coreleft (), I have more than 300K. I cannot figure out what is going wrong here? Could it be heap fragmentation or something like that? I am trying to grab the buffers as the first thing in the program so fragmentation is not really likely. The stack size is set to 20K, and I have about 20K static data. The code is less than 64K. If anyone had a similar problem and found a solution or know what could be wrong, please let me know. It will be much appreciated. Regards Tarkan e-mail: cs106132@umbc5.umbc.edu