003
23.09.2009, 21:28 Uhr
0xdeadbeef
Gott (Operator)
|
Wenn TMeasFloat einfach nur ein typedef auf float ist, dann ist es auch genau sizeof(float) groß. Wobei es natürlich schöner wäre, das Alias zu benutzen, also
C++: |
TMeasFloat f = lpDST->ftGlobalValue;
ofstream outfile("H:\\analog1.out", ofstream::app | ios::binary);
outfile.write(&f, sizeof(TMeasFloat)); outfile.close();
|
Dann beim Einlesen
C++: |
TMeasFloat s; ifstream infile;
infile.open("H:\\analog1.out",ios::binary); infile.seekg (x * sizeof(TMeasFloat), ios::beg); infile.read (&s, sizeof(TMeasFloat)); infile.close();
|
Was ich mit der Speicherfreigabe meine, ist, dass mit new[] angeforderter Speicher auch mit delete[] wieder freigegeben werden muss. Wenn du
C++: |
buffer = new char [((sizeof(float))*8)]; buffer= (char*) &f;
|
schreibst, forderst du Speicher an, überschreibst den Zeiger darauf aber gleich wieder mit etwas anderem. Danach weißt du nicht mehr, wo der angeforderte Speicher ist, und das macht es ausgesprochen schwierig, ihn später wieder freizugeben. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |