このコードを書いてフロート番号のバイナリファイルを作成しましたが、最後にセグメンテーションフォールトエラーが発生します。ファイルには9000の浮動小数点数が書き込まれますが、読み込み時には4096個しか読み込まれません。私は、実行可能ファイル数回、それは4096、8192と9000の間のスイッチを読み取りますが、私はワンセグが常に故障しているバイト数を実行すると...同じコードで作成されたバイナリファイルから読み込み中にseg faultが発生する
float *realRef = new float [length]; //then filling it out...
ofstream out("blah.bin", ios::out | ios::binary);
out.write((char *) &realRef, length*sizeof(float)); //length is 9000
out.close();
ifstream in("blah.bin", ios::in | ios::binary);
float *readTest= new float[length];
in.seekg(0, ios::end);
size_t size=in.tellg(); // printing size shows 4096 BUT it should be 9000
in.seekg(0, ios::beg);
in.read((char *) &readTest, size);
cout << in.gcount() << " bytes read." << endl;
in.close();
は' * realRef =新しいfloat [長さ]浮くだろう
これを行うための正しい方法を行います。あなたのソリューション 'float * realRef = float [length];'もこの場合には動作しますが、コンパイル時に長さを知る必要があります。 – DanS