Я хочу поместить все MinHeapNode в массив и освободить их после завершения печати программы.
Вот код, который создает массив и освобождает его:
void HuffmanCodes(int data[], int freq[], int size) {
struct MinHeap *clear;
int s = 0;
struct MinHeapNode *nodes = malloc(sizeof(struct MinHeapNode) * ((4 * 2) - 1));
struct MinHeapNode *root = buildHuffmanTree(data, freq, size, &clear);
int arr[MAX_TREE_HT], top = 0;
printCodes(root, arr, top, &nodes, &s);
int i;
for (i = 0; i < s; i++) {
free(nodes[i]);
}
free(nodes);
free(clear->array);
free(clear);
}
Вот код, который захватывает каждый MinHeapNode и помещает его в узлы
void printCodes(struct MinHeapNode *root, int arr[], int top, struct MinHeapNode **nodes, int *s) {
if (root->left) {
arr[top] = 0;
printCodes(root->left, arr, top + 1, nodes, s);
}
if (root->right) {
arr[top] = 1;
printCodes(root->right, arr, top + 1, nodes, s);
}
if (isLeaf(root)) {
printf("%d: ", root->data);
printArr(arr, top);
}
nodes[*s] = root;
*s++;
}
Замена последних двух строк printCodes на "free (root);" работает, но я хочу освободить его вне функции.