给定内存分配:
struct typeA *p = malloc(sizeof(struct typeA));
然后在某个地方,例如,在一个函数中,有 2 个选择:
void func(void *q)
{
....
free(q);
}
void func(void *q)
{
....
struct typeA *pp = (struct typeA *)q;
free(pp);
}
两个都OK还是只有第二个OK?为什么?
最佳答案
两者都可以。 free()
只关心存储在指针中且在转换时不会改变的地址。
关于如果其指针已更改类型,是否可以释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090538/