A big array on the heap, initialized like this:
double* vx = new double[1024/8 * 1024 * 1024];
wants to be directly saved to a file like this:
file.write((char*)&vx, sizeof(1024 / 8 * 1024 * 1024));
This only writes the first value but the idea should be clear.
vx is already a pointer. By taking its address again (
&vx) you tell
write to write the memory contents at the memory location where that pointer is stored rather than where the pointer points to.
Moreover, your second parameter is wrong.
sizeof( ...some integers ...) is the same as
sizeof(int). It should be the number of bytes to be written. That is
number of elements * sizeof(double). Note that
sizeof has no buisness in determining the number of elements in an array. You cannot retrieve the number of elements from the pointer
vx and to query the number of elements from an array you would use
So many problems are caused by confusing arrays with pointers.
vx is not an array. It points to the first element of an array.
write needs the memory location of the array, which coincides with the memory location of its first element.