加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:58:46 所属栏目:百科 来源:网络整理
导读:有没有办法知道指针是指向动态分配的内存还是静态分配的内存? 数组作为指向函数的指针传递 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}; f
有没有办法知道指针是指向动态分配的内存还是静态分配的内存?

数组作为指向函数的指针传递

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’是指向动态分配的内存还是静态分配的内存?

解决方法

你不可能知道这一点.这是您的功能定义.更喜欢使用智能指针,或者你必须在函数文档中明确说明它接管传递的对象或数组的所有权.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读