Why does multidimensional arrays not allocate properly?

Jot via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jan 22 00:18:35 PST 2017


On Sunday, 22 January 2017 at 08:07:26 UTC, rikki cattermole 
wrote:
> On 22/01/2017 9:05 PM, Jot wrote:
>> auto x = new int[][](n,m);
>>
>> But one cannot freely assign anywhere in x:
>>
>> x[3,6] = 4 crashes.
>>
>> I, can, of course, convert everything to a linear matrix and 
>> index by
>> i+w*j, but what's the point of having multidimensional 
>> matrices in D if
>> they don't allocate them fully?
>
> It does allocate them fully, you're indexing them wrong.
>
> void main() {
> 	auto x = new int[][](1, 2);
> 	x[0][1] = 3;	
> }

No, that isn't the reason, it was cause I was going past the end 
when I added some new code(the [3,6] was suppose to be [3][6]).

I tried it before and it was crashing before I added the new code 
and visualD seems to not be updating variable values properly 
anymore so I can't really debug ;/


In anycase, what is the correct notation for indexing?

x = new int[][](width, height)

and x[height][width] or x[width][height]?




More information about the Digitalmars-d-learn mailing list