Path: utzoo!attcan!uunet!wuarchive!usc!elroy.jpl.nasa.gov!swrinde!ucsd!ucbvax!UMCVMB.BITNET!C512052 From: C512052@UMCVMB.BITNET ("David K. Drum") Newsgroups: comp.lang.c Subject: Turbo C++ 1.0 Huge pointer addition error? Message-ID: <9101122049.AA28040@lilac.berkeley.edu> Date: 12 Jan 91 20:24:06 GMT Sender: daemon@ucbvax.BERKELEY.EDU Lines: 29 I am having a problem with huge pointer addition on Turbo C++ 1.0, and suspect that there may be an error in the compiler itself. When I attempt to add some integral value to a huge pointer, the result is the pointer plus the integral value SQUARED! For example (in rough code): typedef struct { . . . } foo; foo huge *hp1,hp2; hp1 = (foo huge *) calloc(sizeof(foo),16); /* 16 foo structures */ /* Do something with foo structure # 1 */ hp2 = hp1 + sizeof(foo); . . . In my section of code, calculating the 20-bit addresses of hp1 and hp2 and then subtracting hp1 from hp2 equals sizeof(foo) squared! My above code isn't kosher, I know, so don't tear it up, but it is essentially what I am doing. I have switched from huge to far, and it works fine, but I need to use huge pointers. I have broken down for right now, and I am breaking the pointer into SEG and OFS, doing the arithmetic myself, and patching them back together (it works, of course) but I shouldn't have to do that. Has anyone else found a similar case, has Borland release a bug fix, and where can I get it? While I'm thinking about it, I can't use F4 to run to a point in my program if it isn't already running. I have to use F7 or F8, then F4 works. Otherwise I run out of memory and the computer crashes. HELP! David K. Drum C512052@UMCVMB.BITNET @UMCVMB.MISSOURI.EDU