Message-ID: <360C0F4E.4BC28D4C@mailexcite.com> Date: Fri, 25 Sep 1998 17:46:55 -0400 From: Doug Gale MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Re: Memory allocation! References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit NNTP-Posting-Host: oshawappp34.idirect.com Organization: "Usenet User" Lines: 42 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Renato F. Cantao wrote: > Hi SET! > > On Fri, 25 Sep 1998, Salvador Eduardo Tropea (SET) wrote: > > > "Renato F. Cantao" asked: > > > > > I'm working on some mathematics implementations involving large > > > amounts of memory allocation. So my questions are: > > > > > > 1. Operator "new" and "malloc" are speed-equivalent? > > > > Almost, new is a wrapper, so it makes some extra checks. > > > > > 2. Despite the answer, does exist a better (=faster!) way to > > > allocate memory? > > > > Yes: do your own custom routine optimized for your allocation scheme! ;-) > > > > OK, that's perfect. I'm meaning, does exist any other routine faster than > new or malloc? > > Renato Fernandes CANTAO > State University at Campinas > Campinas - Brazil Depends on how you are going to use the memory. If it is just scratch memory (will be free'd before the function returns) use alloca(). Note that this uses stack space for the allocation, but reduces it to a cycle or two. Oh, alloca is not an ANSI C function. NOTE: the memory allocated this way can't be freed until the function returns. Conversely, there is no way to stop it from being freed when the function returns. alloca is a builtin function that compiles to inline assembly. Example, allocate 100 bytes: subl $100,%esp; movl %esp,_MyPointer