这是我目前拥有的代码。
int main() {
double *t, *k;
Item *a = calloc(1, sizeof(Item));
a->w = malloc(sizeof(double));
t = a->w;
k = t;
free(a->w);
free(a);
free(k);
return 0;
}
在此示例中,我能够编译并运行而没有任何显式错误。但是,如果我在释放结构a之前释放了指针k,那么我会收到一个双重的free / heap损坏错误。
free(a->w);
free(k);
free(a);
此外,如果执行以下操作,则会收到相同的错误:
free(k);
free(a->w);
free(a);
为什么在释放结构k之后没有任何显式错误的情况下我可以释放指针k,但是在释放结构a之前我不能释放内存k指向两次?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句