关于用指针作为函数参数申请动态内存
来源:互联网 发布:空间旋转矩阵 编辑:程序博客网 时间:2024/05/18 02:05
其实一个很简单的问题,却现在才想明白,真suck...
相信我们都知道传值调用参数时,不改变实际参数的值。原理:形参是实参的一个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的这块内存未释放,也无法释放了。
- 关于用指针作为函数参数申请动态内存
- 关于用函数指针参数申请动态内存的问题
- 关于用函数指针参数申请动态内存的问题
- 指针作为函数参数,申请内存
- 二级指针作为函数参数申请内存
- 如果函数的参数是一个指针,不要指望用该指针去申请动态内存。
- 关于指针和数组对申请内存malloc和作为参数传递的一些问题
- 指针作为函数的参数,则不能用此申请内存
- C/C++ 如果函数的参数是一个指针 可以用该指针去申请动态内存吗?
- 关于返回指针以及动态申请内存
- 关于返回指针以及动态申请内存
- 用指针作为函数参数
- [C++]关于指针作为函数参数传递
- [C++]关于指针作为函数参数传递
- 用指针参数去申请内存
- 指针作为函数参数
- 指针作为函数参数
- 指针函数作为参数
- tomcat5.5配置
- javascript中判断IP地址格式
- 字符串匹配问题
- JDK常用命令详解!
- SFA
- 关于用指针作为函数参数申请动态内存
- COM技术4
- 关于PHP+SOAP
- 我的新blog地址
- 常用网络命令大全
- C# 将数据导出到Execl汇总
- PHP中目录的操作---关于opendir
- Halloween-万圣节
- Oracle语句优化53个规则详解