From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d02eb5c33ac65d9 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-03-10 15:33:10 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!nntp.abs.net!uunet!dca.uu.net!nntp.TheWorld.com!not-for-mail From: Robert A Duff Newsgroups: comp.lang.ada Subject: Re: Array and memory usage Date: 10 Mar 2003 18:33:07 -0500 Organization: The World Public Access UNIX, Brookline, MA Message-ID: References: <1ec946d1.0303100713.7f7bcbb7@posting.google.com> NNTP-Posting-Host: shell01.theworld.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: pcls4.std.com 1047339187 19321 199.172.62.241 (10 Mar 2003 23:33:07 GMT) X-Complaints-To: abuse@TheWorld.com NNTP-Posting-Date: Mon, 10 Mar 2003 23:33:07 +0000 (UTC) User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Xref: archiver1.google.com comp.lang.ada:35157 Date: 2003-03-10T18:33:07-05:00 List-Id: mheaney@on2.com (Matthew Heaney) writes: > Robert A Duff wrote in message news:... > > > > If you use this trick on Windows, it will allocate backing store for all > > that virtual memory. I believe most Unix systems are smarter than that. > > > > This trick is sometimes more efficient than linked lists for growable > > data structures. The links waste space, plus if you're not careful, the > > list gets scattered all over the place, damaging cache behavior. The > > nice thing about arrays is that they are contiguous. > > One thing you can on Windows is simply reserve the virtual memory for > the array, without committing it to physical memory, and then use SEH > ("structured exception handling") to handle the error. > > The SEH mechanism supports resumption semantics, so you can handle the > exception by committing the page you need, and then resuming from the > spot from where the exception was raised. > > This is documented in Jeff Richter's Programming Applications book. I thought it happened automatically. That is, if I say: X: array (1..100_000_000) of Integer; it would allocate 400,000,000 bytes of virtual memory, but only allocate physical pages on demand. I believe that much works on Windows (without calling windows-specific stuff like SEH). (Windows 2000, Windows XP.) The problem I found was that it allocated 400,000,000 bytes of backing store, which was annoying. Am I misinformed? - Bob