Bonjour à tous.
Je continue de puiser mon inspiration dans un programme écrit en C (très exactement en Objective C). J'ai donc besoin de le transcrire en C++ et j'aurais besoin de votre avis sur les fonctions malloc et free.
Voici le code de référence :
Pour le 1° malloc, j'aurais pensé le traduire par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 TBQuadTreeNode* TBQuadTreeNodeMake(TBBoundingBox boundary, int bucketCapacity) { TBQuadTreeNode* node = malloc(sizeof(TBQuadTreeNode)); node->northWest = NULL; node->northEast = NULL; node->southWest = NULL; node->southEast = NULL; node->boundary = boundary; node->bucketCapacity = bucketCapacity; node->count = 0; node->points = malloc(sizeof(TBQuadTreeNodeData) * bucketCapacity); return node; } void TBFreeQuadTreeNode(TBQuadTreeNode* node) { if (node->northWest != NULL) TBFreeQuadTreeNode(node->northWest); if (node->northEast != NULL) TBFreeQuadTreeNode(node->northEast); if (node->southWest != NULL) TBFreeQuadTreeNode(node->southWest); if (node->southEast != NULL) TBFreeQuadTreeNode(node->southEast); for (int i=0; i < node->count; i++) { free(node->points[i].data); } free(node->points); free(node); }
Pour le second, j'ai beaucoup plus de difficulté. Je pencherai plus pour un vector, dans ce style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TBQuadTreeNode* node = new TBQuadTreeNode;
Code : Sélectionner tout - Visualiser dans une fenêtre à part node->points = vector<int> tableau (sizeof(TBQuadTreeNodeData) * bucketCapacity);
Quant au free, j'ai voulu essayer avec un delete, sans succès, notamment dans la boucle for.
Quel est votre avis sur cette question, sachant que j'ai peut-être tout faux en voulant adapter du code C en C++ ?
Merci par avance.
Partager