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 :
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 1° malloc, j'aurais pensé le traduire par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TBQuadTreeNode* node = new TBQuadTreeNode;
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
    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.