我遇到内存泄漏问题,我在C中构建BST并需要释放BST.我的BST_element:
typedef struct _BST_Node {
char* name;
char* public_key_file;
struct _BST_Node *left, *right;
} BST_Node;
Run Code Online (Sandbox Code Playgroud)
我的分配功能:
BST_Node* new_BSTNode(char* name, char* public_key_file) {
BST_Node* node = malloc(sizeof(BST_Node));
node->name = malloc((strlen(name) + 1) * sizeof(char));
node->public_key_file = malloc((strlen(public_key_file) + 1) * sizeof(char));
node->left = calloc(1,sizeof(BST_Node));
node->right = calloc(1,sizeof(BST_Node));
//check if allocation was correct
if (!node || !node->name || !node->public_key_file || !node->left || !node->right) {
printf(ALLOCATION_ERROR_MSG);
exit(ALLOCATION_ERROR);
}
//copy strings into struct
strcpy(node->name,name);
strcpy(node->public_key_file,public_key_file);
return node;
}
Run Code Online (Sandbox Code Playgroud)
并且负责释放已分配内存的函数:
void free_BST(BST_Node**node){
//free the children: …Run Code Online (Sandbox Code Playgroud)