请问free一个结点后,那么指向它的指针会被free掉吗
不会,指针是指向地址空间的一块内存,指针本身占用另一块内存,free只是清理掉当前结点,使得指向它的指针找不到内容,对指针本身无影响
我们申请一块内存可以分为两个部分,地址加空间。空间存在与堆中,free 就是释放这片空间,但地址还在,只是已无效。
int *p = malloc(100); 这里有两块空间,一个是指针p, 一个是申请的空间。free只会释放申请的空间。
这个p是指针,存放着地址。放在内存的栈中,作用域结束后这个p就无效了,但p指向的空间不会受影响,还能通过相同地址找到这篇空间,只要保存好这个地址就行。