【发布时间】:2012-02-24 17:14:20
【问题描述】:
我已经实现了一个二叉堆作为一棵树,树节点如下;
struct tree_node {
char* p_word;
int count;
struct tree_node* parent;
struct tree_node* p_left;
struct tree_node* p_right;
};
在涉及到 char* 成员之前,一切都运行良好。当我尝试为 p_word 分配一些内存空间时,我在运行时收到“分段错误”。
fgets(buffer, BUFFERSIZE, fp);
for(tok = strtok(buffer, " "); tok; tok = strtok(0, " ")) {
if(tok) {
curr = (lpnode)malloc(sizeof(node));
curr->p_left = curr->p_right = NULL;
curr->count = 1;
curr->p_word = (char*)malloc(sizeof(char) * strlen(tok));
strcpy(curr->p_word, tok);
insert(&root, &root, curr);
}
}
fclose(fp);
注意,curr 表示要添加到树中的节点,root 表示树的根节点。
我怎样才能在不引起任何内存泄漏的情况下克服这个问题?
【问题讨论】:
标签: c string memory-management segmentation-fault malloc