Re: Windows XP memory limitation? [message #37221] |
Mon, 08 December 2003 10:38  |
dcw_yip
Messages: 22 Registered: October 2003
|
Junior Member |
|
|
Thanks everyone for the responses. Unfortunately none of them worked.
Contrary to what RSI says, there must be a built in memory limitation
or bug in IDL. I'm running 6.0 by the way. Once IDL crashes out with
the memory error, if I type in "BYTARR(120000000)" in the command
window I get "Unable to allocate memory: to make array." Even though
I still should have about 2GB of RAM available. I'm using the /3GB
flag in XP Pro. But if I try to allocate the same amount of memory in
C using "malloc(120000000)" it works just fine. This is while IDL is
in it's crash state. So there is that much available memory available
in the system. In fact if I use "malloc(1200000000)" in C it still
works. That's 10 times the amount of memory that fails under IDL
under the same conditions.
David
|
|
|
Re: Windows XP memory limitation? [message #37247 is a reply to message #37221] |
Fri, 05 December 2003 11:31   |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
David Chevrier writes:
> your options are to switch to a 64-bit version of windows, switch to
> another OS, or to be much more memory efficient, such as using the
> temporary function appropriately and making sure you delete variables
> you are no longer using. see david fanning's site
> http://www.dfanning.com/tips/delete_all_vars.html
> a slight modification of it to get only one variable to be erased is
> PRO disappear, getRidOfMe
> END
> and call it from your program as
> disappear, temporary(largeArrayToDelete)
Actually, I think what you are looking for is UNDEFINE:
http://www.dfanning.com/variable_undefine.html
Cheers,
David
--
David W. Fanning, Ph.D.
Fanning Software Consulting, Inc.
Phone: 970-221-0438, E-mail: david@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|
|
|
Re: Windows XP memory limitation? [message #37342 is a reply to message #37221] |
Tue, 09 December 2003 08:23  |
Karl Schultz
Messages: 341 Registered: October 1999
|
Senior Member |
|
|
"David Yip" <dcw_yip@yahoo.com> wrote in message
news:201431cc.0312081038.47b3503e@posting.google.com...
> Thanks everyone for the responses. Unfortunately none of them worked.
> Contrary to what RSI says, there must be a built in memory limitation
> or bug in IDL. I'm running 6.0 by the way. Once IDL crashes out with
> the memory error, if I type in "BYTARR(120000000)" in the command
> window I get "Unable to allocate memory: to make array." Even though
> I still should have about 2GB of RAM available. I'm using the /3GB
> flag in XP Pro. But if I try to allocate the same amount of memory in
> C using "malloc(120000000)" it works just fine. This is while IDL is
> in it's crash state. So there is that much available memory available
> in the system. In fact if I use "malloc(1200000000)" in C it still
> works. That's 10 times the amount of memory that fails under IDL
> under the same conditions.
There's still a big difference in the largest contiguous block of memory
that you can allocate from a stand-alone C program, a Win32 application, and
a Win32 application with MFC. If you build your C test program as a Win32
app with MFC, I doubt that it will be able to allocate a contiguous block as
big as a simple console app can.
You may also want to read the thread "Memory Headaches" posted to this
newsgroup starting Aug 1, 2002. There is a lot more detail in the thread
and some mention of some tools you can use to determine what is fragmenting
your memory space.
IDL has no self-imposed memory limitations that might be responsible for
your observations.
Karl
|
|
|