我正在用C编写一个"Set"数据结构的程序.
当Set的一个实例存在时它工作正常,但是当存在Set的两个实例时它不起作用.
当候选者是第一个元素时,我删除元素的代码也不起作用.
有人能帮我吗?
这是代码:
首先,您将指针传递给value by value.即代替
void Set_Create (Set* set) {
set = malloc(...); // Malloc here leads to memory-leak.
//...
}
int main() {
Set *set; // Some value like 0xdeadbeef pointing somewhere
Set_Create (set);
// set have still undefined value
}
Run Code Online (Sandbox Code Playgroud)
使用
Set *Set_Create () {
Set *set = malloc(...);
/// ...
return set;
}
int main() {
Set *set; // Some value like 0xdeadbeef pointing somewhere
set = Set_Create ();
// set point to new memory
}
Run Code Online (Sandbox Code Playgroud)
要么:
void Set_Create (Set *set) {
// No malloc
/// ...
return set;
}
int main() {
Set set; // Create on stack
Set_Create (&set); // Initialize
// ...
}
Run Code Online (Sandbox Code Playgroud)
我建议重新阅读关于指针的章节(不要担心 - 它们被认为很难,但它们对于C程序员来说是必须的).