假设我分配了一块动态内存,并且它是成功的。稍后,有可能这段内存不再属于用户。是否有可能确定用户是否仍拥有这块动态内存?即是否可以在运行时确定谁拥有一段动态内存?
#include <stdio.h>
#include <stdlib.h>
int main(){
int* ptr = malloc(sizeof(int));
/* ... ptr may have been freed ... */
belongToUser(ptr); /* <- some sort of check? */
}
如果你想知道指针是否已经被释放,只需在释放指针后将它设置为NULL即可。稍后,如果它是'NULL',那么你知道它已经被释放。 – muXXmit2X
简答:不,你不能这样做。你需要跟踪你分配的内存。一旦通过'malloc'分配的指针被释放,它就会永远消失。 –
除非你释放它,否则该对象属于该过程。你什么意思? – Olaf