rahardj@ccu.umanitoba.ca (Budi Rahardjo) (11/19/89)
I am trying to write a program (in MSC) which loads a 100K data into memory,
and save the starting address and ending address with a pointer or index.
The problem is after reaching the end of 64 K the pointer wrap around
the beginning of the same data blocks, so it writes over the first 36K.
To make it simple, here is the problem I have :
* How do I increment the pointer so that it can point beyond the 64 barier ?
Here is part of my code :
/******************
READ FILES
*******************/
int read_file()
{
extern int far *basech1;
extern long int endch1;
extern char *data_file;
int far *_fmalloc();
int *calloc();
int numread = BUFFER_SIZE;
int *buffer;
int i;
char ch1file[FILE_NAME_LENGTH];
FILE *stream;
long int counter = 0;
buffer = calloc(BUFFER_SIZE, sizeof(int));
if (buffer == NULL) {
printw("Not enough Memory\n");
return(1);}
basech1 = _fmalloc(CH1_SIZE , sizeof(int));
if (basech1 == NULL) {
printw("Not enough Memory\n");
return(1); }
stream = fopen(ch1file,"rb");
if (stream == NULL) {
printw("File error\n");
refresh();
return(1);}
while (numread == BUFFER_SIZE) {
numread = fread((int *)buffer,1,BLK_TOREAD,stream);
for (i=0 ; i < (numread/(sizeof(int))) ; i++)
{
*(basech1+counter) = buffer[i];
counter = counter + 1;
}
} /* end of while */
endch1 = counter;
fclose(stream);
printw("End of file 1 (%u)\n", endch1);
refresh();
}
Thanks, Budi
--
-----------------------------------------------
Budi - VLSI Lab. | rahardj@ccu.UManitoba.CA
Electrical Eng. | rahardj@ccm.UManitoba.CA
U. of Manitoba | rahard@ee.UManitoba.CAccsdra@gdt.bath.ac.uk (Dave Allum) (11/23/89)
In article <1989Nov18.222704.16822@ccu.umanitoba.ca> rahardj@ccu.UManitoba.CA (Budi Rahardjo) writes: >I am trying to write a program (in MSC) which loads a 100K data into memory, >and save the starting address and ending address with a pointer or index. >The problem is after reaching the end of 64 K the pointer wrap around >the beginning of the same data blocks, so it writes over the first 36K. >To make it simple, here is the problem I have : >* How do I increment the pointer so that it can point beyond the 64 barier ? Declare your pointers as char huge * and use the halloc/hfree routines.