Vectorでやってもいいんですが,それだとFile I/O系を全て変更しないといけないので.
//Grobal
double3 **u_rms;
float3 ***u_timeAnime;
//複数subroutineを無理に一つにまとめたので,動かないかも
subroutine()
{
u_rms= new double3* [size1];
u_rms[0]= new double3 [size1* size2];
for(i= 1; i < size1; i++){ //Pointerを代入? 多分,要素アクセスのアドレス的な何か
u_rms[i]= u_rms[0] + (i* size2);
}
size_array_2D_d3= sizeof(double3)* size1* size2; //もしかしたら,Paddingが…
u_timeAnime= new float3** [is_1000];
u_timeAnime[0]= new float3* [is_1000* size1];
u_timeAnime[0][0]= new float3 [is_1000* size1* size2];
for( i= 0; i < is_1000; i++) { //[i][j]のために,i=0
u_timeAnime[i]= u_timeAnime[0]+ (i* size1);
for(j= 0; j < size1; j++){
u_timeAnime[i][j]= u_timeAnime[0][0]+ ((i* size1* size2)+ (j* size2));
}
}
size_array_3D_Anime_f3= sizeof(float3)* is_1000* size1*size2;
ofstream fout("rms.bin", ios_base::binary);
//先頭アドレスを文字列に変換するため.u_rmsは,ポインタで宣言しているため,並列の先頭要素のアドレスを.sizeof(u_rms)だと,ポインタの大きさを返す.
fout.write( (char*)(&u_rms[0][0]), size_array_2D_d3 );
fout.close();
fout.open("timeAnime.bin", ios_base::binary);
fout.write( (char*)(&u_timeAnime[0][0][0]), size_array_3D_Anime_f3d );
fout.close();
delete[] u_rms[0];
delete[] u_rms;
delete[] u_timeAnime[0][0];
delete[] u_timeAnime[0];
delete[] u_timeAnime;
}