我是C的新手并且正在处理一个需要操作wset(WordSet)对象的项目,该对象基本上只是一个WordNode对象数组,它们本身就是一个单词的表示(它们包含一个count int,所以相反重复的WordNode对象,现有的WordNode计数递增)
在实现基本搜索方法时,我没有初始化双指针WordNode的某些方面,因为通过Valgrind检查测试显示使用下面的(* p)允许内存泄漏,通过不是malloc& #39; d或免费(我认为后者不太可能)。
我想看看我是否错误地实现了这个问题,或者我的问题是否存在于此代码块之外,很可能是在创建内存的原始分配中。
static WordNode **search (WordSet *wset, char *word) {
WordNode **p;
p = &((wset)->head);
char *pWord = (*p)->word;
while((*p) != NULL){
//if the words we're trying to find and our word match...
//...break and return the address
if(strcmp(pWord,word)==0){
break;
}
p = &((*p)->next);
}
return p;
}
任何错误似乎都追溯到这里并且调试是通过valgrind执行的,因为一些更改(特别是关于(* p))导致valgrind在陷入无限的while循环时永远不会完成。
我相信我现有的书面测试无关紧要,问题可以在这段代码中找到。但是,如果附加的上下文有助于详细说明,我会尝试添加它!