In een vorig topic was mijn probleem een heap corruptie. Ik heb destijds de wereld aan _CrtCheckMemory aanroepen over de gehele applicatie geplaatst (wat een rotwerk
) en heb toen alle problemen op weten te lossen. Echter zit ik nu met het volgende probleem:
Ik heb een functie die de volgende structuur kent:
De Klasse class fungeert als een tolk tussen de DataClass en de database. Hij zorgt ervoor dat de gegevens vanuit de database worden geladen en dat ze weer worden opgeslagen wanneer nodig.
De gegevens uit de database worden dus opgehaalt en vervolgens in de members van DataClass opgeslagen. Voordat de SetContents methode de methode verlaat staan alle gegevens prima in de klasse.
Echter, en dit is mijn probleem, word de inhoud van de DataClass helemaal overhoop gehaald op het moment dat de methode retourneert. De eerste regel na de methode aanroep krijgt een compleet ander beeld van de klasse dan binnen in de methode.
Deze methodes liggen verspreid over meerdere DLL's. Echter, omdat er imho geen geheugen worden gealloceerd, danwel wordt vrijgegeven dan zou dit echter geen problemen mogen geven.
Indien iemand een idee heeft waardoor dit veroorzaakt zou kunnen worden dan hoor ik het graag
.
Ik heb een functie die de volgende structuur kent:
code:
1
2
3
4
5
6
7
8
| void Klasse::SetContents(DataClass *pDataClass)
{
pDataClass->setMemberField("x", 1);
pDataClass->setMemberField("y", 2);
pDataClass->setMemberField("z", 3);
// Hier is de inhoud van pDataClass zoals deze zou moeten zijn
} |
De Klasse class fungeert als een tolk tussen de DataClass en de database. Hij zorgt ervoor dat de gegevens vanuit de database worden geladen en dat ze weer worden opgeslagen wanneer nodig.
De gegevens uit de database worden dus opgehaalt en vervolgens in de members van DataClass opgeslagen. Voordat de SetContents methode de methode verlaat staan alle gegevens prima in de klasse.
Echter, en dit is mijn probleem, word de inhoud van de DataClass helemaal overhoop gehaald op het moment dat de methode retourneert. De eerste regel na de methode aanroep krijgt een compleet ander beeld van de klasse dan binnen in de methode.
Deze methodes liggen verspreid over meerdere DLL's. Echter, omdat er imho geen geheugen worden gealloceerd, danwel wordt vrijgegeven dan zou dit echter geen problemen mogen geven.
Indien iemand een idee heeft waardoor dit veroorzaakt zou kunnen worden dan hoor ik het graag