科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件.Net使用指针作为函数参数申请动态内存

.Net使用指针作为函数参数申请动态内存

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

.Net使用指针作为函数参数申请动态内存。相信我们都知道传值调用参数时,不改变实际参数的值。原理:形参是实参的一个……

作者:佚名 来源:中国自学编程网 2007年11月20日

关键字: 指针 函数参数 内存

  • 评论
  • 分享微博
  • 分享邮件
.Net使用指针作为函数参数申请动态内存相信我们都知道传值调用参数时,不改变实际参数的值。原理:形参是实参的一个copy(副本),而不是指向同一块内存地址。于是用指针或引用就可以解决这个问题,大多数时候还会节省内存开销,因为不用作副本拷贝。

  这样一个例子:

以下是引用片段:
  void test(char *ps)
  {
  ps = (char *)malloc(10*sizeof(char));
  }
  int main(void)
  {
  char *str = NULL;
  test(str);
  strcpy(str, "abcd");
  cout << str << endl;
  return 0;
  }

  用指针作为参数,在函数内部申请动态内存,结果该程序会崩溃。

  原因其实很简单,ps申请了内存,也就是改变了ps这个副本的内容(即申请的动态内存地址),但函数返回了,原形参ps的内容没有任何改变,就如同上述的传值一样,ps的内容仍为NULL,于是出错。

  而且不但出错,该程序还会出现内存泄露的问题,因为malloc的这块内存未释放,也无法释放了。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章