Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!ucla-cs!ucla-ma!terry From: terry@joshua.math.ucla.edu Newsgroups: comp.lang.c Subject: need help with large arrays & Turbo C Message-ID: <1991Jun14.013524.7243@math.ucla.edu> Date: 14 Jun 91 01:35:24 GMT Sender: terry@MATH.UCLA.EDU Reply-To: terry@MATH.UCLA.EDU () Distribution: na Organization: UCLA Mathematics Department Lines: 46 Help! I am having trouble porting a program from Microsoft C 5.x (I think) to Turbo C 2.0. The problem concerns some arrays. In the MSC source, they are defined in one module as unsigned huge buf[131072] float huge difbuf[32][1024] In the headers of the other source files, the variables are referred to as extern unsigned huge buf[] extern float huge difbuf[32][1024] This has to be compiled with the medium memory model. Turbo C has two complaints: 1. The arrays are too big (each is bigger than one segment) 2. "huge" can only modify pointers, not arrays It seems that with Turbo C, I have to declare something like unsigned huge *buf buf = farmalloc(131072L * sizeof(unsigned)) and in the other files put extern unsigned huge *buf Now, according to the FAQ, *buf and buf[] are not quite the same; I'm afraid I am making some mistake in the extern definition. However, I want to keep the 'huge' modified in there to beware of pointer arithmetic. I'm entirely unsure what to do with the 2D array, difbuf. And lastly, I want to initialize these arrays with memset(), but memset() only sets up to 65535 elements. The arrays may change in size; is there a good way to figure the size at run time and initialize with several calls to memset()? Please help! Please send your replies by e-mail; I will post a summary. Thanks! terry