Thread overview | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
April 02, 2011 Static array size limit | ||||
---|---|---|---|---|
| ||||
http://digitalmars.com/d/2.0/arrays.html says static arrays are limited to 16mb, but I can only allocate 1mb. My fault, or bug? enum size = (16 * 1024 * 1024) / int.sizeof; //int[size] a; // Error: index 4194304 overflow for static array enum size2 = (16 * 1000 * 1000) / int.sizeof; //int[size2] b; // Stack Overflow //int[250_001] c; // Stack Overflow int[250_000] d; // ok |
April 02, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | This is using dmd 2.052 on windows by the way. |
April 02, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | On 2011-04-02 06:21, simendsjo wrote:
> http://digitalmars.com/d/2.0/arrays.html says static arrays are
> limited to 16mb, but I can only allocate 1mb.
> My fault, or bug?
>
> enum size = (16 * 1024 * 1024) / int.sizeof;
> //int[size] a; // Error: index 4194304 overflow for static
> array
> enum size2 = (16 * 1000 * 1000) / int.sizeof;
> //int[size2] b; // Stack Overflow
> //int[250_001] c; // Stack Overflow
> int[250_000] d; // ok
Well, 16 * 1024 * 1024 certainly isn't going to work when it's an array ints. An int is 4 bytes. So, the max would be more like 4 * 1024 * 1024, and that's assuming no overhead (which there may or may not be). Now, 4 * 1024 * 1024 is 4_194_304, which is definitely more than 250_000, so if 16mb is indeed the limit, I don't know why you can't create one greater than 250_000, but you're _not_ going to be able to create one of length 16 * 1024 * 10243. That would be 64mb.
- Jonathan M Davis
|
April 02, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | I think you missed my "/int.sizeof" at the end. enum size = (16*1024*1024)/int.sizeof; int[size] a; // "Error index overflow for static" as expected int[size-1] b; // stack overflow int[250_001] c; // stack overflow int[250_000] d; // ok |
April 02, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | simendsjo:
> http://digitalmars.com/d/2.0/arrays.html says static arrays are
> limited to 16mb, but I can only allocate 1mb.
> My fault, or bug?
It accepts 4_000_000 ints, but not (16 * 1024 * 1024) / int.sizeof = 4_194_304 ints. I don't know why it's designed this way... I'd like 4_194_304 ints.
Bye,
bearophile
|
April 02, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On 02.04.2011 16:45, bearophile wrote:
> simendsjo:
>
>> http://digitalmars.com/d/2.0/arrays.html says static arrays are
>> limited to 16mb, but I can only allocate 1mb.
>> My fault, or bug?
>
> It accepts 4_000_000 ints, but not (16 * 1024 * 1024) / int.sizeof = 4_194_304 ints. I don't know why it's designed this way... I'd like 4_194_304 ints.
>
> Bye,
> bearophile
The main problem is that it gives a Stack Overflow already at 250_001
|
April 02, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | simendsjo:
> The main problem is that it gives a Stack Overflow already at 250_001
I meant with the array as a global variable.
The stack on Windows can be set very large too, with -L/STACK:10000000
Bye,
bearophile
|
April 04, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Sat, 02 Apr 2011 10:45:51 -0400, bearophile <bearophileHUGS@lycos.com> wrote: > simendsjo: > >> http://digitalmars.com/d/2.0/arrays.html says static arrays are >> limited to 16mb, but I can only allocate 1mb. >> My fault, or bug? > > It accepts 4_000_000 ints, but not (16 * 1024 * 1024) / int.sizeof = 4_194_304 ints. I don't know why it's designed this way... I'd like 4_194_304 ints. That would be 16 MiB. http://en.wikipedia.org/wiki/Mebibyte -Steve |
April 04, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | Steven Schveighoffer:
> That would be 16 MiB.
>
> http://en.wikipedia.org/wiki/Mebibyte
Then I think 16 MiB are more useful than 16_000_000 bytes.
Bye,
bearophile
|
April 04, 2011 Re: Static array size limit | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Mon, 04 Apr 2011 12:43:03 -0400, bearophile <bearophileHUGS@lycos.com> wrote:
> Steven Schveighoffer:
>
>> That would be 16 MiB.
>>
>> http://en.wikipedia.org/wiki/Mebibyte
>
> Then I think 16 MiB are more useful than 16_000_000 bytes.
Seems arbitrary to me. I'm sure some people feel 32MB would be more useful.
-Steve
|
Copyright © 1999-2021 by the D Language Foundation