Ik ben C++-code aan het schrijven om een boom te genereren voor het oplossen van een speltheoretisch probleem. Het komt erop neer dat ik een struct heb:
Deze is dus gelinkt aan 3 child-nodes, die weer gelinkt zijn, etc. Deze genereer ik alsvolgt:
Start:
Takken:
Het probleem is nu dat na deze twee for-lussen, volgens de debugger het volgende geldt:
Dit probleem treedt daarnaast alleen op als ik in Visual Studio het project als Debug-project compileer, de Release versie lijkt dit probleem niet te hebben. Als ik namelijk de debugversie in de console draai is hij snel klaar (door de fouten), en de release-versie draait een lange tijd door.
Heeft iemand enig idee wat hier het probleem kan zijn? Ik ben hier nu al >2 uur naar aan het staren en ondanks het toevoegen van vele cout's en assert's kan ik er niet achter komen wat er fout is...
Edit: Het blijft zelfs zo als ik de loop verander in:
C++:
1
2
3
4
5
6
| struct Node { bool playersOut[5]; int playerLevel[5]; Node *child[3]; }; |
Deze is dus gelinkt aan 3 child-nodes, die weer gelinkt zijn, etc. Deze genereer ik alsvolgt:
Start:
C++:
1
2
3
4
5
6
7
8
| Node *base = new Node; for(int i=0; i<5; i++) { base->playersOut[i] = false; base->playerLevel[i] = 0; } cout << "Starting the tree...\n"; BuildTreeRecursive(base, 0, 0); |
Takken:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| void BuildTreeRecursive(Node* parent, int level, int player) { for(int i=0; i<3; i++) for(int j=0; j<5; j++) { Node* temp = new Node; temp->playersOut[j] = parent->playersOut[j]; temp->playerLevel[j] = parent->playerLevel[j]; parent->child[i] = temp; } [..] //Recursie, irrelevant voor probleem } |
Het probleem is nu dat na deze twee for-lussen, volgens de debugger het volgende geldt:
code:
(evenals de andere playerLevels)1
2
3
4
| parent->child[2]->playerLevel[0] -842150451 parent->playerLevel[0] 0 |
Dit probleem treedt daarnaast alleen op als ik in Visual Studio het project als Debug-project compileer, de Release versie lijkt dit probleem niet te hebben. Als ik namelijk de debugversie in de console draai is hij snel klaar (door de fouten), en de release-versie draait een lange tijd door.
Heeft iemand enig idee wat hier het probleem kan zijn? Ik ben hier nu al >2 uur naar aan het staren en ondanks het toevoegen van vele cout's en assert's kan ik er niet achter komen wat er fout is...
Edit: Het blijft zelfs zo als ik de loop verander in:
C++:
1
2
3
4
5
6
7
8
| for(int i=0; i<3; i++) for(int j=0; j<5; j++) { Node* temp = new Node; temp->playersOut[j] = 1; temp->playerLevel[j] = 1; parent->child[i] = temp; } |
[ Voor 8% gewijzigd door kunnen op 05-12-2008 01:13 ]