From: Erik Max Francis Newsgroups: comp.os.msdos.djgpp Subject: Re: DJGPP Structs Date: Sun, 09 Mar 1997 13:30:29 -0800 Organization: Alcyone Systems Lines: 51 Message-ID: <33232BF5.3197CADD@alcyone.com> References: NNTP-Posting-Host: newton.alcyone.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp cbraga AT datasoft DOT com DOT br wrote: > > > defPt *View; > > > > > > View = (defPt *) malloc (sizeof (defPt) * max_x * max_y); > > > *(View + x + y * max_x) = 25; [*] > > > > Yes: "incompatible types in assignment" (directly from gcc). > > > > I don't know what the statement marked with [*] is supposed to do here. > > I know, I was sleeping when I wrote that. :-) > You can stop the warnings by casting the pointer: > > (defPt *)(View + x + y * max_x) = ... No, you're getting the warning because you're trying to assign an integral type to a defPt. In fact, this works less, because you're now trying to assign an integral type to a defPt *. What you meant is View[x + y*max_x].sx = 25 /* or whichever member you meant */; > And linear space memory is what I want. Why? > > 1. It is a lot simpler to deal with, A _L_O_T_. > 2. Did you know each pointer eats 4 bytes? > 3. It is faster, > 4. Allocating a single big chunk instead of lots of little bits reduces > memory fragmentation to insignificant dimensions, > 5. Did I say it's faster? With the two-dimensional array method, you have a pointer add, a dereference, a pointer add, and a dereference. With the one-dimensional method, you have an integer multiply, two pointers adds, and a dereference. > > This is (along the lines of) the right way to do dynamic allocation if > you > > If there's anything wrong, would you (or anyone) mind telling me? You weren't using the right syntax for what you meant again. -- Erik Max Francis, &tSftDotIotE / email: max AT alcyone DOT com Alcyone Systems / web: http://www.alcyone.com/max/ San Jose, California, United States / icbm: 37 20 07 N 121 53 38 W \ "I am become death, / destroyer of worlds." / J. Robert Oppenheimer (quoting legend)