是否有可能在运行时确定谁拥有一段动态内存?

时间:2017-07-17 13:59:43

标签: c memory-management

假设我分配了一块动态内存,并且它成功了。稍后,这段内存可能不再属于用户。是否有可能确定用户是否还拥有这块动态内存?即。

#include <stdio.h>
#include <stdlib.h>

int main(){
   int* ptr = malloc(sizeof(int));

   /* ... ptr may have been freed ... */

   belongToUser(ptr); /* <- some sort of check? */
}

1 个答案:

答案 0 :(得分:0)

有一种(既不干净也不安全)检查的可能性:

  1. 为SIGSEGV注册信号处理程序
  2. 访问内存
  3. 如果信号处理程序已运行,则返回未映射,否则映射
  4. 如上所述,我从不建议检查,而是编写记住(pointer = NULL)的C程序。