Ik ben bezig met het schrijven van een tooltje die onder andere leest en schrijft van een bestand. Het compileren gaat prima, dus de code zou moeten werken. Toch krijg ik een error zodra het programma afgelopen is. Het gaat om deze error:
*** glibc detected *** double free or corruption (fasttop): 0x0804b020 ***
^^ Dit is dus @ Linux. Ook onder Windows werkt het niet, daar krijg ik een veel grotere error waar ik net zo veel wijs uit kan worden:
Vrij eenvoudig dus. Display is een lidfunctie die gewoon de waardes van een object op het scherm zet.
Zodra ik van text een int maak gaat het prima, dus de fout zit hem in het feit dat ik een string gebruik. Van de uitleg van Google en GoT search begrijp ik niet zo heel veel. Moet ik me echt gaan verdiepen in object serialization, wat dat ook wezen mag, of is het probleem makkelijker op te lossen?
Voor de geinteresseerden heb ik m'n code ook even geupload, misschien dat mijn code niet volledig genoeg is, dus hierbij: http://geensite.nl/zooi2/simout.cpp
*** glibc detected *** double free or corruption (fasttop): 0x0804b020 ***
^^ Dit is dus @ Linux. Ook onder Windows werkt het niet, daar krijg ik een veel grotere error waar ik net zo veel wijs uit kan worden:
Ik ben er achter gekomen dat de fout zou moeten zitten in het feit dat ik een string wil lezen uit een binair bestand. Ik kan dit misschien het beste duidelijk maken met een beetje code---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!
Program: ...
File: dbgdel.cpp
Line: 52
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
Afbreken Opnieuw Negeren
---------------------------
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| // De class... class Tekst { private: int ID; string text; // Public gedeelte met constructor en lidfuncties } // De functie waar het om gaat: void readfile(string naam_in) { ifstream bestand2(naam_in.c_str(), ios::binary); Tekst LeesBestand; if(bestand2.read(reinterpret_cast<char*>(&LeesBestand), sizeof(Tekst))) { bestand2.close(); // Het lezen gaat goed! LeesBestand.Display(); } else { // code als het fout gaat } } |
Vrij eenvoudig dus. Display is een lidfunctie die gewoon de waardes van een object op het scherm zet.
Zodra ik van text een int maak gaat het prima, dus de fout zit hem in het feit dat ik een string gebruik. Van de uitleg van Google en GoT search begrijp ik niet zo heel veel. Moet ik me echt gaan verdiepen in object serialization, wat dat ook wezen mag, of is het probleem makkelijker op te lossen?
Voor de geinteresseerden heb ik m'n code ook even geupload, misschien dat mijn code niet volledig genoeg is, dus hierbij: http://geensite.nl/zooi2/simout.cpp
[ Voor 5% gewijzigd door Hmail op 21-02-2006 21:31 ]
It might sound as if I have no clue what I'm doing, but I actually have a vague idea.