专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » 指针作为函数参数:使用指针作为函数参数申请动态内存 »正文

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

来源: 发布时间:星期三, 2008年9月10日 浏览:134次 评论:0
相信我们都知道传值调用参数时,不改变实际参数的值。原理:形参是实参的一个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,于是出错。 www.

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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: