free函数究竟是还谁的空间(语言-c语言)

img


想问问大家这里free()应该填p++吗,
“free只能还申请来的空间的首地址”是什么意思?

free(p)
你得指定需要free的指针。
释放就是将内层块的控制权交换给操作系统
你这代码已经出问题了,p++以后,p的值被修改了,已经不是上面申请的内存块的首地址了。free(p)也是会出现内存泄漏了

free(--p)
p的地址已经被你改了,你写free(p)那地址不正确
写free(p++)就更错误了,++是个运算符,你把p++当变量名吗

买椟还珠不行;得买椟还椟,买珠还珠。