软件频道>程序开发>JavaVBVCDelphiC/C++Web开发微软专栏移动数据库程序人生软件工程|开发客
您现在的位置: 天极网 > 开发频道 > .Net使用指针作为函数参数申请动态内存
全文

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

2007-11-04 06:00作者:佚名出处:中国自学编程网责任编辑:幽灵

  .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的这块内存未释放,也无法释放了。


Tech·Ed 2007 微软技术大会

点击查看 Tech·Ed 2007 微软技术大会 专题

相关搜索:
关注此文读者还看过
文章排行
本周
本月
最近更新
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众