【发布时间】:2011-08-28 14:19:50
【问题描述】:
考虑c代码:
void mycode() {
MyType* p = malloc(sizeof(MyType));
/* set the values for p and do some stuff with it */
cleanup(p);
}
void cleanup(MyType* pointer) {
free(pointer);
pointer = NULL;
}
我认为在调用cleanup(p); 之后,p 的内容现在应该为NULL 是不是错了? cleanup(MyType* pointer) 会正确释放内存分配吗?
我正在编写我的大学作业,发现调试器仍然显示指针指向内存地址,而不是我期望的 0x0(或 NULL)。
我发现 C 中的内存管理非常复杂(我希望不只是我)。任何人都可以了解正在发生的事情吗?
【问题讨论】:
标签: c pointers memory-management