【发布时间】:2020-12-06 07:28:33
【问题描述】:
下面的代码可以吗?
int *a_p = malloc(sizeof(int));
int *b_p = a_p;
free(b_p); //Free a_b by using b_p
a_p = b_p = NULL;
我很困惑,因为两个指针指向同一个内存......
如果那个代码是不可能的,请教我为什么?
【问题讨论】:
-
是的,有可能。
-
非常感谢!欣赏你!
-
一些提供指针基本讨论的链接可能会有所帮助。 Difference between char pp and (char) p? 和 Pointer to pointer of structs indexing out of bounds(?)...(忽略标题,答案讨论指针基础知识)
-
某些带有 void ** 参数的函数可以分配您必须释放的内存。
-
是的,有可能,两个指针都指向同一个分配的缓冲区,因此它们中的任何一个(但不是两者)都可以用于
free()分配的缓冲区。