分配给指针的指针和free()如何一起工作?

问题描述 投票:1回答:1

为什么释放一个指针时会说p,它又分配给另一个指针q指向的位置,也释放q?

//for example,
int *p = malloc(sizeof(int));
*p = 10;
int *q = malloc(sizeof(int));
q = p;
free(p);
//This frees q as well.

指针q和p具有不同的地址,但仅指向相同的位置(也就是说,它们存储的地址是10的相同地址。如果我在这里输入错了,请纠正我。)]]

矛盾最明显地出现在我思考指针的方式或free()的工作方式中,因为据我所知(并不多),由于q和p具有不同的地址,释放p不会影响q根本没有,除非我在理解指针上有错误,否则free()/ memory以一种特殊的方式工作。

我想知道为什么会这样。(我知道帖子Free an assigned pointer,但没有解释为什么或如何发生这种情况)

为什么释放一个指针时会说p,它也分配给另一个指针q指向的位置,也释放q? //例如,int * p = malloc(sizeof(int)); * p = 10; int * q = malloc(sizeof(int)); q = p; ...

c pointers memory free
1个回答
0
投票

也许这会有所帮助:

© www.soinside.com 2019 - 2024. All rights reserved.