001
22.09.2009, 18:39 Uhr
0xdeadbeef
Gott (Operator)
|
Du wirst da in einen Stack-Overflow gelaufen sein. Die üblichste Lösung für dieses Problem ist
C++: |
float *array = malloc(sizeof(float) * dim1 * dim2 * dim3);
// und dann Adressierung etwa so:
array[x * dim2 * dim3 + y * dim3 + z] = 0.0f;
|
Der Lesbarkeit halber würde ich das wohl in eine Funktion verpacken, beispielsweise
C++: |
struct extents_3d { size_t dim1, dim2, dim3; };
size_t make_index(struct extents_3d const *spec, size_t x, size_t y, size_t z) { return x * spec->dim2 * spec->dim3 + y * spec->dim3 + z; }
// ...
struct extents_3d array_spec = { dim1, dim2, dim3 }; array[make_index(&array_spec, x, y, z)] = 0.0f;
|
Bist du an C gebunden, oder könntest du auch C++-Bibliotheken benutzen? -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 22.09.2009 um 18:43 Uhr von 0xdeadbeef editiert. |