有没有办法知道指针是指向动态分配的内存还是静态分配的内存?

数组作为函数指针传递

void func (int* p)
{
  if( p )
  {
    cout << p[0] << p[1] ;
   ...
   // func has a responsibility to deallocate what p is pointing
  }
}

int main()
{
  int a[] = {10, 20, 30, 50};
  func(a);
  ...
  return 0;
}

如果解除分配的所有权转移到 func.
func p 如何知道“p”是指向动态分配的内存还是静态分配的内存?

最佳答案

你不可能知道这个。这是根据您的功能定义的。更喜欢使用智能指针,或者你必须在你的函数文档中清楚地表明它接管了你传递的对象或数组的所有权。

关于c++ - 如何知道指针指向动态或静态分配的内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32116556/

10-11 16:30