Conversion malloc et free en C++
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:
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:
TBQuadTreeNode* node = new TBQuadTreeNode;
Pour le second, j'ai beaucoup plus de difficulté. Je pencherai plus pour un vector, dans ce style :
Code:
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.