Thread overview |
---|
March 08, 2003 Dynamic array initialization access violation | ||||
---|---|---|---|---|
| ||||
Try this code: int main() { int[] test; test[0..10] = 0; return 0; } Crashes... Is that suppose to happen? -- // DDevil |
March 08, 2003 Re: Dynamic array initialization access violation | ||||
---|---|---|---|---|
| ||||
Posted in reply to DDevil | it should throw an null pointer or array index exception test is null (although ~= item or .length = is allowed on a null array) i.e. int [] test; test ~= 0; try this instead int main( char[][] args ) { int[] test = new int[10]; test[0..10] = 0; return 0; } or int main( char[][] args ) { int[] test; test.length = 10; test[0..10] = 0; return 0; } "DDevil" <ddevil@functionalfuture.com> wrote in message news:b4d0pj$dqd$1@digitaldaemon.com... > Try this code: > > int main() > { > int[] test; > test[0..10] = 0; > return 0; > } > > Crashes... Is that suppose to happen? > > -- > // DDevil > |
March 08, 2003 Re: Dynamic array initialization access violation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Wynn | Mike Wynn wrote: > it should throw an null pointer or array index exception > test is null (although ~= item or .length = is allowed on a null array) That's what I thought. Instead I get an access violation. For some reason I had it in my head that dynamic arrays would automatically allocate themselves. I understand now. So how to I allocate a dynamic multidimensional array? This seems logical but does not work: int[][] test = new int[10][10]; The following works for the first dimension, but how do I initialize the second without manually looping through every element? (that seems tedious): int[][] test = new int[][10]; // now what? loop? Thanks! -- // DDevil |
March 08, 2003 Re: Dynamic array initialization access violation | ||||
---|---|---|---|---|
| ||||
Posted in reply to DDevil | only the last dimension can be dynamic int main( char[][] args ) { int[10][] test = new int[10][10]; return 0; } but int main( char[][] args ) { int[][] test; test ~= new int[1]; return 0; } works, ask Walter why this is. "DDevil" <ddevil@functionalfuture.com> wrote in message news:b4d2ra$eia$1@digitaldaemon.com... > Mike Wynn wrote: > > it should throw an null pointer or array index exception > > test is null (although ~= item or .length = is allowed on a null array) > > That's what I thought. Instead I get an access violation. > > For some reason I had it in my head that dynamic arrays would automatically allocate themselves. I understand now. > > So how to I allocate a dynamic multidimensional array? > > This seems logical but does not work: > int[][] test = new int[10][10]; > > The following works for the first dimension, but how do I initialize the second without manually looping through every element? (that seems tedious): > > int[][] test = new int[][10]; > // now what? loop? > > Thanks! > > -- > // DDevil > |
Copyright © 1999-2021 by the D Language Foundation