c++ - 如何知道指针指向动态或静态分配的内存

标签 c++ pointers

有什么方法可以知道指针是指向动态分配的内存还是静态分配的内存?

数组作为函数指针传递

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/

相关文章:

c++ - copy-and-swap 习语的低效率?

c++ - 如何判断指针是否是指向数组的指针?

c - 在函数中释放 C** 指针 malloc 时出错

pointers - 为什么后续的 Rust 变量会递增堆栈指针而不是递减它?

c - 从键盘接受 5 个字符串的程序

c - 为什么编译时没有报错?

c++ - 在将它们写入文件之前比较使用 fprintf 生成的两个结果行

python ctypes C++ 取回 char* 在 linux 上缺少最后一个字符

C++ MPI : could not sent anything

c++ - 按类型检索 printf 格式参数