0

I have a dynamic array of double with 3 dimensions eg.

customArray : array of array of array of double

In the program I set the length of each dimension separately (not rectangular array) and change it when it is needed.

I wonder if the array is stored in a compact memory portion so to save it in a stream at once like writebuffer(customArray,sizeof(customArray)) and later, load it again to the same dynamic array like readbuffer(customArray, savedSize);

Is this possible ?

1
  • Each dimension is in a contiguous block of memory. Dimensions are sparse. Commented Mar 24, 2016 at 21:49

1 Answer 1

4

This is not actually a multi-dimensional array. This is what is known as a jagged array. The inner most dimension is contiguous but the outer dimensions are arrays of pointers.

So the elements are not stored contiguously. If you wish to write them to a file in contiguous fashion you will need to arrange that by looping over each dimension.

In pseudo code that would be:

for i
  for j
    for k
      write(arr[i,j,k]);

Since the innermost dimension is contiguous this could be written as:

for i
  for j
    write(arr[i,j]);

A jagged array can have member arrays of differing length but I presume that your array has members all of the same length.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.